【发布时间】:2016-11-30 18:16:23
【问题描述】:
我正在尝试在 laravel 中编写自定义指令。但是,它仅将我的刀片部分的路径作为字符串返回,而不是像 @include 那样的实际 html。
@customInclude('authenticated/partials/header2')
Blade::directive('customInclude', function($partial){
if(Config::get('constants.ORG_ID') === 'organizationId'){
return "<?php echo $partial; ?>";
}
});
我希望自定义指令返回在路径 'authenticated/partials/header2' 中找到的 html,但是,刀片似乎无法识别该路径是我的 php.ini 中的路径。我的自定义指令位于 AppServiceProvider.php 文件中。有谁知道@include 的工作原理非常好,所以他们可以解释为什么我的路径没有被识别。
【问题讨论】:
-
提示。
$partial的值为authenticated/partials/header2。当你echo authenticated/partials/header2;时会发生什么? -
@ceejayoz 页面非常棒。返回语法错误,意外的 'authenticated' (T_STRING),期待 ',' 或 ';'
-
正确,因为您已经在生成的编译 Blade 模板中生成了
<?php echo authenticated/partials/header2; ?>。这不是有效的 PHP,即使您通过在其周围添加's 使其有效,它也只会回显模板文件的路径。你需要让你的自定义指令 do 一些东西。 -
@ceejayoz 啊该死的。我需要做这样的事情吗stackoverflow.com/questions/16891398/…
-
您可能可能能够做到这一点,我猜?
return Blade::compile("@include('$partial')");可能得到你想要的,即使它相当不雅。如果您深入了解@include指令的工作原理,我怀疑还有更多 Laravel 方法。