我想知道是否有办法以某种方式包含模板Blade会在包含的模板的开头自动编写带有文件名的html-comment。这对于包含大量模板的项目非常有用。
示例:
// file 1
<div class="bla">
@include('folder.subfolder.templatename')
</div>
// file 2 ( folder/subfolder/templatename.blade.php )
<p>Lorem ipsum dolor sit amet</p>
// resulting file
<div class="bla">
<!-- folder/subfolder/templatename.blade.php -->
<p>Lorem ipsum dolor sit amet</p>
</div>
想象一下,开发人员需要在2年后实现一项功能。通过生成的注释,他将能够在浏览器中查看源代码,并了解每个temolate在项目中的位置。
答案 0 :(得分:4)
这可以通过扩展Blade来实现,虽然它有点hacky。我认为laravel应该为扩展刀片提供更清晰的界面。
基本上我所做的就是扩展Blade并创建一个@commentinclude
指令。包含的逻辑是从Laravels compileInclude()
method中提取的。我刚刚添加了评论和前面的换行符。由于后引用包含整个控制结构(('viewname'
)的一些字符,我们需要先将它们删除。我还用/
个字符替换了所有点
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createOpenMatcher('commentinclude');
$replace = '$1<?php echo "<!-- " . str_replace(["(\'", ".", "\'"], ["", "/", ""], "$2" ) . " -->\r\n" . $__env->make$2, array_except(get_defined_vars(), array(\'__data\', \'__path\')))->render() ?>';
return preg_replace($pattern, $replace, $view);
});
用法示例:
@commentinclude('my.view.file')
我想知道是否有人可以提供更清洁的解决方案。