【问题标题】:How to pass arguments in a custom blade directive?如何在自定义刀片指令中传递参数?
【发布时间】:2015-11-16 08:28:42
【问题描述】:

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

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

当我写的时候:

@hello('world')

返回:

Hello ('world')

我想要:

Hello world

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

【问题讨论】:

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


    【解决方案1】:

    试试这个:

    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
    

    【讨论】:

    • @HomoSapien -- 此方法返回 php 代码,但您的方法返回字符串
    • 你能把数组作为参数传递吗?貌似每次都转换成字符串。
    • 是的,我不能传递多个参数.. 有什么想法吗?
    • 这行得通吗?我试过了,总是 $value 是字符串
    猜你喜欢
    • 2017-04-21
    • 2015-10-13
    • 2016-08-04
    • 2017-12-26
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    相关资源
    最近更新 更多