我尝试在AppServiceProvider中创建一个新的刀片指令:
{{}}
然后在我的视图中调用此指令:
<?php
public function boot()
{
Blade::directive('test', function () {
return Blade::compileString('@if(1==1) test @endif');
});
}
但它没有用,给了我一个空白页。
答案 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);
});