Laravel blade 包含部分的自定义指令

Laravel blade custom directive with include partial

我有一个自定义 Blade 指令,我试图从中包含一个带有 Blade 语法 @include() 的部分指令。问题是我有一个自定义视图命名空间:

\Blade::directive('name', function() {
    $viewsNamespace = 'viewsNameSpace::';
    $formPartial = $viewsNamespace . 'partials._form';
    return "{{ @include({$formPartial}) }}";
});

这样输出错误,

Class 'viewsNameSpace' not found

因为它将 viewsNameSpace:: 解释为 class。

这只输出字符串而不解析它:

return "@include('{$formPartial}')";

这不会引发任何错误,但不会加载部分内容:

return "{{ @include('{$formPartial}') }}";

请注意,当我在这样的模板中使用 in 时,部分功能正在运行:

@include('viewsNameSpace::partials._form')

但我无法通过指令使其工作。

如有任何帮助和建议,我们将不胜感激!谢谢!

我是这样工作的:

return "<?php echo view('$formPartial')->render(); ?>";

其中 $formPartial'viewsNameSpace::partials._form'

试试这个:

return "<?php echo view('viewsNameSpace::partials._form')->render(); ?>";

如果有人在 16 年的 post 之后遇到这个问题,Laravel 现在有一个 blade 助手来创建自定义 include 指令(自版本 5.6.5 起):

Blade::include('viewsNameSpace::path.to.view.file');

这将添加到您的应用服务提供商的 boot() 方法中。更多示例 here.