【问题标题】: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);
});