From 59da252a186bec2030393186d2382388b9df9cf8 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Thu, 2 Feb 2023 15:45:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9D=97=E7=BA=A7=E4=BF=AE?= =?UTF-8?q?=E6=94=B9hook:=20wrapperhook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Hook/HookServiceProvider.php | 57 ++++++++++++------- .../views/pages/products/form/form.blade.php | 4 +- themes/default/layout/header.blade.php | 20 +++---- themes/default/product.blade.php | 20 +++---- 4 files changed, 59 insertions(+), 42 deletions(-) diff --git a/beike/Hook/HookServiceProvider.php b/beike/Hook/HookServiceProvider.php index e2f44f6b..4b6f590a 100644 --- a/beike/Hook/HookServiceProvider.php +++ b/beike/Hook/HookServiceProvider.php @@ -8,11 +8,6 @@ use Illuminate\Support\ServiceProvider; class HookServiceProvider extends ServiceProvider { - public function boot() - { - $this->bootDirectives(); - } - public function register() { $this->commands([ @@ -24,18 +19,26 @@ class HookServiceProvider extends ServiceProvider }); } - protected function bootDirectives() + + public function boot() + { + $this->bootHookDirectives(); + $this->bootWrapperHookDirectives(); + } + + /** + * 添加 blade hook 标签, 不需要 @endhook + * @hook('xxx'), 添加 hook 直接输出到页面 + */ + protected function bootHookDirectives() { Blade::directive('hook', function ($parameter) { - $parameter = trim($parameter, '()'); + $parameter = trim($parameter, '()'); $parameters = explode(',', $parameter); $name = trim($parameters[0], "'"); - // $parameters[1] => bool => is this wrapper component? - if (!isset($parameters[1])) { - return ' <'.'?php - + return ' $__definedVars],function($data) { return null; }); if ($output) echo $output; - ?'.'>'; - } else { - return ' <'.'?php - $__hook_name="'. $name .'"; + ?>'; + }); + } + + + /** + * 添加 blade wrapper hook 标签 + * + * @wrapperhook('xxx') --- @endwrapperhook, 将某段代码打包输出再添加 hook 输出 + */ + protected function bootWrapperHookDirectives() + { + Blade::directive('wrapperhook', function ($parameter) { + $parameter = trim($parameter, '()'); + $parameters = explode(',', $parameter); + $name = trim($parameters[0], "'"); + + return ' '; - } + ?>'; }); - Blade::directive('endhook', function ($parameter) { - return ' <'.'?php + Blade::directive('endwrapperhook', function () { + return ' '; + ?>'; }); } } diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index 409748eb..5b3d2069 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -76,12 +76,12 @@ {{-- --}} - @hook('admin.product.edit.brand', true) + @wrapperhook('admin.product.edit.brand') - @endhook + @endwrapperhook diff --git a/themes/default/layout/header.blade.php b/themes/default/layout/header.blade.php index 23176664..2b177899 100644 --- a/themes/default/layout/header.blade.php +++ b/themes/default/layout/header.blade.php @@ -2,7 +2,7 @@