如何在自定义刀片指令中传递参数?

Hom*_*ien 7 php laravel blade laravel-5 laravel-5.1

在Laravel 5.1中,我试图创建一个非常基本的刀片指令:

Blade::directive('hello', function ($planet) {
    return 'Hello ' . $planet;
});
Run Code Online (Sandbox Code Playgroud)

我写的时候:

@hello('world')
Run Code Online (Sandbox Code Playgroud)

它返回:

Hello ('world')
Run Code Online (Sandbox Code Playgroud)

我想要:

Hello world
Run Code Online (Sandbox Code Playgroud)

是的我可以手动删除这些括号,但它是Laravel中的错误还是什么?我怎样才能得到world而不是(world)价值$planet.

zia*_*war 5

尝试这个 :

Blade::directive('hello', function ($planet) {
    return "<?php echo 'Hello' . $planet ?>";
});

@hello('world'); // => Hello world
Run Code Online (Sandbox Code Playgroud)

您还可以传递数组而不是字符串,在这种情况下,您必须定义如何在返回值中处理数组,这是一个示例:

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
Run Code Online (Sandbox Code Playgroud)