【问题标题】:Laravel Blade compileString gives me a Blank PageLaravel Blade compileString 给了我一个空白页
【发布时间】:2021-01-08 18:33:42
【问题描述】:

我试图在我的 AppServiceProvider 中创建一个新的刀片指令:

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

然后在我看来调用这个指令:

@test()

但这不起作用,给了我一个空白页。

【问题讨论】:

    标签: php laravel blade laravel-blade


    【解决方案1】:

    我尝试了几件事,但最后我通过将刀片指令代码从 BladeCompiler.php 复制并粘贴到我的自定义指令而不是使用 compileString 来解决这个问题

    【讨论】:

      【解决方案2】:

      你得到一个空白页,因为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);
      });
      

      【讨论】:

        猜你喜欢
        • 2021-10-08
        • 2016-08-07
        • 2020-04-03
        • 2022-06-15
        • 2014-04-02
        • 2021-02-10
        • 2023-04-08
        • 2014-11-25
        • 2015-11-28
        相关资源
        最近更新 更多