Laravel 在刀片指令中使用刀片指令

Laravel 在刀片指令中使用刀片指令,laravel,laravel-5,blade,Laravel,Laravel 5,Blade,我使用的是Laravel5.1。我正在尝试将刀片指令(@extend)与我的自定义刀片指令一起使用 Blade::directive('base', function() use ($theme) { return "@extends($theme)" }); 但是,上面的代码只是字面上显示内容(@extends($theme))与我之前的评论相反,我认为使用blade编译器是可能的(但未经测试) Blade::directive('base', function() use ($them

我使用的是Laravel5.1。我正在尝试将刀片指令(
@extend
)与我的自定义刀片指令一起使用

Blade::directive('base', function() use ($theme) {
  return "@extends($theme)"
});

但是,上面的代码只是字面上显示内容(
@extends($theme)

与我之前的评论相反,我认为使用blade编译器是可能的(但未经测试)

Blade::directive('base', function() use ($theme) {
    return Blade::compileString("@extends({$theme})");
});

您是否尝试过
return“@extends(“.$theme”)”不起作用。它只是输出整个ThingUnfortuly,刀片模板不会在编译的视图上进行第二次解析。这使得您在不手动调用blade编译器来运行第二次解析的情况下很难完成所做的工作。@DavidBarker Yep,这就是答案。@Ben不再那么确定,看起来应该很容易做到。这似乎对@yield指令不起作用。有人让它工作了吗?就像你试图在一个指令中编译yield一样?我知道这是一个旧线程,但我刚刚开始在我的项目中使用你的解决方案,有趣的是它工作了-但只有当我的自定义指令在通过本机@include指令调用的视图中使用时,但是如果我试图在视图中直接使用自定义指令,我会得到WSOD。。。对为什么会这样做有什么见解吗?哦,很有趣,我记得这是在Laravel5.1中使用的(很久以前我就开始使用它了)。我还没有在Laravel 5.3+中尝试过。我不明白为什么它不起作用,你检查日志了吗?我在Laravel 5.8中测试过,删除
return
。只需使用这个
Blade::compileString()
…因为如果使用
return
,它将执行两次。