我有一个自定义Blade指令,我尝试使用Blade语法@include()
来包含部分。问题是我有一个自定义视图命名空间:
\Blade::directive('name', function() {
$viewsNamespace = 'viewsNameSpace::';
$formPartial = $viewsNamespace . 'partials._form';
return "{{ @include({$formPartial}) }}";
});
输出错误
Class 'viewsNameSpace' not found
因为它将viewsNameSpace::
解释为一个类。
这只输出字符串而不解析它:
return "@include('{$formPartial}')";
这并没有抛出任何错误,但它没有加载部分:
return "{{ @include('{$formPartial}') }}";
请注意,当我在这样的模板中使用时,部分功能正常工作:
@include('viewsNameSpace::partials._form')
但是我无法通过指令使其发挥作用。
任何帮助和建议将不胜感激!谢谢!
答案 0 :(得分:5)
这就是我的工作方式:
return "<?php echo view('$formPartial')->render(); ?>";
$formPartial
为'viewsNameSpace::partials._form'
的位置。
答案 1 :(得分:2)
如果自16年以来一直有人遇到这个问题,Laravel现在有一个刀片助手来创建自定义include
指令(自版本5.6.5起):
Blade::include('viewsNameSpace::path.to.view.file');
这将被添加到您的应用服务提供商的boot()
方法中。更多示例here。
答案 2 :(得分:0)
试试这个:
return "<?php echo view('viewsNameSpace::partials._form')->render(); ?>"
;