如何在自定义 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