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

时间:2015-08-22 13:07:28

标签: php laravel laravel-5 blade laravel-5.1

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

Blade::directive('hello', function ($planet) {
    return 'Hello ' . $planet;
});

当我写:

@hello('world')

它返回:

Hello ('world')

我想:

Hello world

是的我可以手动删除这些括号,但这是Laravel中的错误还是什么?如何将world代替(world)作为$planet的值。

1 个答案:

答案 0 :(得分:4)

试试这个:

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

@hello('world'); // => Hello world

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

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