Laravel刀片定制指令包含部分

时间:2016-08-09 08:09:21

标签: laravel laravel-5 blade

我有一个自定义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')

但是我无法通过指令使其发挥作用。

任何帮助和建议将不胜感激!谢谢!

3 个答案:

答案 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(); ?>";