如何在自定义 blade 指令中传递参数?
How to pass arguments in a custom blade directive?
在 Laravel 5.1 中,我试图创建一个非常基本的 blade 指令:
Blade::directive('hello', function ($planet) {
return 'Hello ' . $planet;
});
当我写的时候:
@hello('world')
它returns:
Hello ('world')
我要:
Hello world
是的,我可以手动删除这些括号,但这是 Laravel 中的错误还是什么?如何获得 world
而不是 (world)
作为 $planet
.
的值
试试这个:
Blade::directive('hello', function ($planet) {
return "<?php echo 'Hello' . $planet ?>";
});
@hello('world'); // => Hello world
您也可以传递 array 而不是字符串,在这种情况下,您必须定义如何在 return 值中处理数组,这是一个示例:
Blade::directive('hello', function ($value) {
if (is_array($value)) {
return "<?php echo 'Hello' . $value[0] . ' and ' . $value[1] ?>";
}
if (is_string($planets)) {
return "<?php echo 'Hello' . $value ?>";
}
// fallback when value is not recognised
return "<?php echo 'Hello' ?>";
});
@hello('world'); // => Hello world
@hello(['world', 'mars']); // => Hello world mars
在 Laravel 5.1 中,我试图创建一个非常基本的 blade 指令:
Blade::directive('hello', function ($planet) {
return 'Hello ' . $planet;
});
当我写的时候:
@hello('world')
它returns:
Hello ('world')
我要:
Hello world
是的,我可以手动删除这些括号,但这是 Laravel 中的错误还是什么?如何获得 world
而不是 (world)
作为 $planet
.
试试这个:
Blade::directive('hello', function ($planet) {
return "<?php echo 'Hello' . $planet ?>";
});
@hello('world'); // => Hello world
您也可以传递 array 而不是字符串,在这种情况下,您必须定义如何在 return 值中处理数组,这是一个示例:
Blade::directive('hello', function ($value) {
if (is_array($value)) {
return "<?php echo 'Hello' . $value[0] . ' and ' . $value[1] ?>";
}
if (is_string($planets)) {
return "<?php echo 'Hello' . $value ?>";
}
// fallback when value is not recognised
return "<?php echo 'Hello' ?>";
});
@hello('world'); // => Hello world
@hello(['world', 'mars']); // => Hello world mars