Laravel:修剪包含的模板

Posted

技术标签:

【中文标题】Laravel:修剪包含的模板【英文标题】:Laravel: trim included template 【发布时间】:2019-02-25 16:40:50 【问题描述】:

我有一个名为include/data.blade.php 的模板文件,文件末尾以换行符结尾。 (这是我不想更改的 IDE 默认配置)

提到的模板通过以下方式包含在另一个模板中:

# parent blade template
<script>
    let tpl = '@include("include.data")';
</script>

由于data.blade.php 以空行结尾,模板渲染后我在浏览器中收到一个javascript错误:

Uncaught SyntaxError: Invalid or unexpected token

问题是:我可以以任何方式修剪包含的模板吗?

【问题讨论】:

【参考方案1】:

这是 laravel 5.6+ 的解决方案。

    AppServiceProvider::boot()中注册一个新的trim刀片指令:

    //Register starting tag
    Blade::directive('trim', function() 
        return '<?php ob_start() ?>';
    );
    
    //Register ending tag
    Blade::directive('endtrim', function() 
        return "<?php echo trim(ob_get_clean()); ?>";
    );
    

    使用注册指令如下:

    # parent blade template
    <script>
        let tpl = '@trim @include("include.data") @endtrim';
    </script>
    

【讨论】:

以上是关于Laravel:修剪包含的模板的主要内容,如果未能解决你的问题,请参考以下文章

修剪 Laravel 中所有 Eloquent 模型的所有字符串属性

laravel 视模板情况加载视图

Laravel - 从@include 修改和返回变量

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

laravel 刀片模板变量

laravel5.1 - 刀片模板不渲染