Laravel8使用foreach输出分类名称如何去掉末尾多余的连字符分隔符
Laravel 8 Blade循环输出分类末尾多余连字符解决方法
有两种常用的高效解决方案,不需要修改现有控制器的查询逻辑:
方案1:使用Blade内置$loop变量判断
这是最灵活的方案,如果你后续需要给分隔符加自定义样式、空格等调整,优先选这个:
修改你的Blade循环代码如下:
@foreach($category_tags as $category_tag) <a href="{{ $category_tag->link }}">{{ $category_tag->title }}</a> @if(!$loop->last) - @endif @endforeach
$loop是Blade循环自带的变量,$loop->last会自动识别当前是不是循环的最后一项,只有非最后一项时才输出连字符分隔符。
方案2:使用Laravel集合的join方法直接拼接
如果不需要额外处理循环内的逻辑,这个方案代码更简洁:
直接替换掉整段foreach代码即可:
{!! $category_tags->map(fn($category_tag) => "<a href='{$category_tag->link}'>{$category_tag->title}</a>")->join(' - ') !!}
注意:这里要用
{!! !!}语法输出内容,避免HTML标签被Blade自动转义。
如果你使用的PHP版本低于7.4不支持箭头函数,改用下方写法:
{!! $category_tags->map(function($category_tag) { return "<a href='{$category_tag->link}'>{$category_tag->title}</a>"; })->join(' - ') !!}
内容的提问来源于stack exchange,提问作者tohid
相关产品推荐
相关产品推荐

