支持 blade hook 循环体传值

This commit is contained in:
Edward Yang 2023-07-07 14:15:55 +08:00
parent e1a4d1b3cc
commit 33784ebbdb
1 changed files with 22 additions and 0 deletions

View File

@ -5,6 +5,7 @@ namespace Beike\Hook;
use Beike\Hook\Console\HookListeners; use Beike\Hook\Console\HookListeners;
use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
class HookServiceProvider extends ServiceProvider class HookServiceProvider extends ServiceProvider
{ {
@ -36,6 +37,7 @@ class HookServiceProvider extends ServiceProvider
$parameters = explode(',', $parameter); $parameters = explode(',', $parameter);
$name = trim($parameters[0], "'"); $name = trim($parameters[0], "'");
$definedVars = $this->parseParameters($parameters);
return ' <?php return ' <?php
$__definedVars = (get_defined_vars()["__data"]); $__definedVars = (get_defined_vars()["__data"]);
@ -43,6 +45,7 @@ class HookServiceProvider extends ServiceProvider
{ {
$__definedVars = []; $__definedVars = [];
} }
'. $definedVars .'
$output = \Hook::getHook("' . $name . '",["data"=>$__definedVars],function($data) { return null; }); $output = \Hook::getHook("' . $name . '",["data"=>$__definedVars],function($data) { return null; });
if ($output) if ($output)
echo $output; echo $output;
@ -84,4 +87,23 @@ class HookServiceProvider extends ServiceProvider
?>'; ?>';
}); });
} }
/**
* Parse parameters from Blade
*
* @param $parameters
* @return string
*/
protected function parseParameters($parameters):string
{
$definedVars = '';
foreach ($parameters as $paraItem) {
$paraItem = trim($paraItem);
if (Str::startsWith($paraItem,'$')) {
$paraKey = trim($paraItem, '$');
$definedVars .= '$__definedVars["'.$paraKey.'"] = $'.$paraKey.';';
}
}
return $definedVars;
}
} }