我是Laravel新手,研究,但我找不到一個如此簡單的解決方案。我創建了刀片服務器的自定義指令,即「測試」中的app/Providers/AppServiceProvider.php
文件:刀片自定義指令接收價值作爲一個字符串,而不是其原始值
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::directive('test', function($expression){
// Dumps as well: "$var1 , $var2"
dump($expression);
list($arg1, $arg2) = explode(',',str_replace(['(',')',' '], '', $expression));
// will print: $var1 , $var2
return "<?php echo '$arg1 , $arg2'; ?>";
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
從理論上講,它的用法應該是一個刀片模板裏面很簡單,但如在下面的示例中指令打印文字值的參數,例如$ Var1爲打印$ var1的,而不是其真正的內容「測試」的:
<?php
$var1 = 'test a';
$var2 = 'test b';
?>
// Prints: $var1 , $var2
// Expected: "test a test b"
@test($var1 , $var2)
已經嘗試過使用多個代碼,它們的值打印:
@test({{ $var1 }}, {{ $var2 }})
@test({!! $var1 !!}, {!! $var2 !!})
@test({{{ $var1 }}}, {{{ $var2 }}})
但都不起作用,指令總是接收變量的名稱而不是其內容。在這種情況下,我忽略了什麼?任何幫助表示讚賞。我正在使用Laravel 5.4。*。
將返回值更改爲'return「<?php echo $ arg1。'。。$ arg2;?>」;' – Sebastian