Laravel Blade compileString给了我一个空白页面

时间:2016-12-19 10:52:57

标签: php laravel blade laravel-blade

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

{{}}

然后在我的视图中调用此指令:

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

但它没有用,给了我一个空白页。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您会得到一个空白页面,因为 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);
});
相关问题