Templates Laravel-Blade:@包括一个带有“自动”的模板;“文件名注释”;

Templates Laravel-Blade:@包括一个带有“自动”的模板;“文件名注释”;,templates,laravel,blade,Templates,Laravel,Blade,我想知道是否有一种方法可以以Blade自动编写html注释的方式包含模板,该注释的文件名位于包含的模板的开头。这在一个有很多模板的项目中可能会很有帮助 例如: // file 1 <div class="bla"> @include('folder.subfolder.templatename') </div> // file 2 ( folder/subfolder/templatename.blade.php ) <p>Lorem ipsum dol

我想知道是否有一种方法可以以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>
//文件1
@包括('folder.subfolder.templatename')
//文件2(文件夹/subfolder/templatename.blade.php)
Lorem ipsum dolor sit amet

//结果文件 Lorem ipsum dolor sit amet


设想一个开发人员需要在两年后实现一个特性。通过生成的注释,他将能够在浏览器中查看源代码,并了解每个temolate在项目中的位置。

这可以通过扩展Blade来实现,尽管这有点粗糙。我认为laravel应该提供一个更干净的界面来扩展刀片

基本上,我所做的就是扩展Blade并创建一个
@commentinclude
指令。include的逻辑是从中提取出来的。我刚刚添加了评论,并在前面加了一个换行符。由于back引用包含整个控件结构的一些字符(
('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);
});

我想知道是否有人能提供一个更干净的解决方案。

这可以通过扩展Blade来实现,尽管这有点粗糙。我认为laravel应该提供一个更干净的接口来扩展Blade

基本上,我所做的是扩展Blade并创建一个
@commentinclude
指令。include的逻辑是从中提取出来的。我只是在它前面添加了注释和一个换行符。因为后面的引用包含整个控件结构的一些字符(
('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);
});

我想知道是否有人能提供一个更干净的解决方案。

这意味着什么,请澄清您的问题。我只想在浏览器中查看源代码,其中包含可在项目文件夹中找到的包含模板的信息。这意味着什么,请澄清您的问题。我只想在浏览器中查看源代码包含可在项目文件夹中找到的包含模板的信息