簡體   English   中英

Laravel Blade compileString 給了我一個空白頁

[英]Laravel Blade compileString gives me a Blank Page

我試圖在我的 AppServiceProvider 中創建一個新的刀片指令:

<?php
public function boot()
{
  Blade::directive('test', function () {
    return Blade::compileString('@if(1==1) test @endif');
  });
}

然后在我看來調用這個指令:

@test()

但它不起作用,給了我一個空白頁。

我嘗試了幾件事,但最后我通過將 BladeCompiler.php 中的刀片指令代碼復制並粘貼到我的自定義指令而不是使用 compileString 來解決此問題

你會得到一個空白頁面,因為Blade::compileString是有狀態單例對象的外觀。 該對象不希望您調用它。

作為一種解決方法,您可以創建一個新的編譯器實例並使用它:

Blade::directive('endtabs', function ($exp) {
    $content1 = sprintf("@include('%s', ['tabs' => \$tabs])", 'backend/tabs/test');
    $compiler = new BladeCompiler(app('files'), app('config')['view.compiled']);
    return $compiler->compileString($content1);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM