2015-08-22 73 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

真的嗎? ........ –