gpt4 book ai didi

templates - Laravel- Blade : @include a template with automated "filename-comment"

转载 作者:行者123 更新时间:2023-12-05 03:14:28 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以包含一个模板,Blade 会自动在包含的模板的开头写一个带有文件名的 html 注释。这对于具有大量模板的项目可能会有所帮助。

例子:

// 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 年后实现一项功能。通过生成的评论,他将能够在浏览器中查看源代码,并了解每个模板在项目中的位置。

最佳答案

这可以通过扩展 Blade 来实现,尽管它有点 hacky。我认为 laravel 应该提供一个更简洁的接口(interface)来扩展 blade。

基本上我所做的就是扩展 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')

我想知道是否有人可以为此提供更清洁的解决方案。

关于templates - Laravel- Blade : @include a template with automated "filename-comment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24449335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com