Laravel Blade限制@yield结果的字符

问题描述

我有多个具有公共@section的视图,这些视图将显示在布局文件中。而且我必须限制@yield返回的字符数。

// layout.blade.PHP
...
<Meta property="og:title" content="@yield('og_title','Default Value')" />
...
// sample.blade.PHP
...
@section('og_title',$page->og_title)
...

尽管该示例非常简单易懂,但每个og_title @section都有自己的后处理功能(如果...否则...)

现在,我正在做的是向每个og_title @section添加substr并将其重复到所有视图。问题是,当字符限制更改(例如60到75)时,我还必须将其更改为每个视图。

// sample.blade.PHP
...
@section('og_title',substr($page->Meta_title,60))
...

是否有一种方法来限制@yield返回的字符数? 类似于:

// layout.blade.PHP
...
<Meta property="og:title" content="@yield('og_title','Default Value',$limit??)" />
...

我还尝试向@yeild添加substr,但返回错误

// layout.blade.PHP
...
<Meta property="og:title" content="{{ substr(@yield('og_title','Default Value'),60) }}" />
...

解决方法

与Google进行了一个小时的小冲突之后,我发现了一个有点“棘手”的解决方案,可以使用基础函数产生收益,然后对其应用substr

// layout.blade.php
...
<meta property="og:title" content="{{ substr(e($__env->yieldContent('title','Default Value')),60) }}" />
...