2015-08-22 39 views
5

在Laravel 5.1,我想创建一个非常基本的刀片指令:如何在自定义刀片指令中传递参数?

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

当我写:

@hello('world') 

它返回:

Hello ('world') 

我想:

Hello world 

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

回答

3

试试这个:

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 
+0

但为什么这个工作和我的不工作? –

+0

@HomoSapien - 此方法返回php代码,但您的方法返回字符串 – user4621032

+0

真的吗? ........ –