You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel美食日志应用:将数据库逗号分隔食谱步骤转为有序列表

在Laravel中将逗号分隔的食谱步骤转为有序列表的方法

嘿,这个需求很常见,我来给你两种实用的实现方法,都能轻松把数据库里逗号分隔的步骤字符串转成你想要的有序列表,直接在info.blade.php里就能搞定:

方法一:在Blade模板中直接处理

这种方法适合快速修改,不需要改动模型代码。你可以在模板里先把字符串分割成数组,再循环生成有序列表:

{{-- 替换原来的<p>{{ $recipe->steps }}</p> --}}
@php
    // 分割字符串:注意这里用', '(逗号+空格)作为分隔符,和你的示例匹配
    $steps = explode(', ', $recipe->steps);
    // 如果数据库里的步骤可能存在逗号后无空格的情况,用下面的代码自动去除每个步骤的首尾空格
    // $steps = array_map('trim', explode(',', $recipe->steps));
@endphp

<ol>
    @foreach($steps as $step)
        <li>{{ $step }}</li>
    @endforeach
</ol>

如果担心字符串末尾有多余逗号导致空步骤,可以加个过滤:

@php
    $steps = array_filter(array_map('trim', explode(',', $recipe->steps)));
@endphp

方法二:使用模型访问器(更优雅的Laravel风格)

如果这个步骤列表需要在多个页面复用,推荐用模型访问器,把逻辑封装在模型里,模板里只需要调用即可:

  1. 首先在你的食谱模型(比如app/Models/Recipe.php)中添加访问器:
public function getStepsListAttribute()
{
    // 分割并去除空格,同时过滤空元素
    $steps = array_map('trim', explode(',', $this->steps));
    return array_filter($steps);
}
  1. 然后在info.blade.php里直接使用这个访问器:
<ol>
    @foreach($recipe->steps_list as $step)
        <li>{{ $step }}</li>
    @endforeach
</ol>

这种方式的好处是逻辑统一维护,以后如果要修改步骤的分割规则,只需要改模型里的代码就行,不用挨个改模板。

内容的提问来源于stack exchange,提问作者GemmaM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:04:31