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

如何在Laravel Blade视图中遍历嵌套数据并渲染组件图标?

解决嵌套数据展示与Blade组件渲染问题

直接用PHP递归拼接HTML字符串的方式行不通,因为Blade不会解析字符串里的组件标签。推荐用Blade原生的递归渲染能力,两种方案任选:

方案一:使用Blade局部视图递归

  1. 创建局部视图文件 resources/views/partials/person-tree.blade.php,内容如下:
<div class="person-item">
    <x-icons.chevron-right />
    <h1>{{ $person->name }}</h1>
    
    @if($person->has('children'))
        <div class="children-container">
            @foreach($person->children as $child)
                @include('partials.person-tree', ['person' => $child])
            @endforeach
        </div>
    @endif
</div>
  1. 在主视图中调用这个局部视图,传入根节点数据:
@include('partials.person-tree', ['person' => $rootPerson])

方案二:使用Blade组件递归

  1. 创建组件文件 resources/views/components/person-tree.blade.php,内容如下:
<div class="person-item">
    <x-icons.chevron-right />
    <h1>{{ $person->name }}</h1>
    
    @if($person->has('children'))
        <div class="children-container">
            @foreach($person->children as $child)
                <x-person-tree :person="$child" />
            @endforeach
        </div>
    @endif
</div>
  1. 在主视图中调用该组件,传入根节点数据:
<x-person-tree :person="$rootPerson" />

为什么之前的方法失效?

你之前用PHP函数拼接HTML字符串时,<x-icons.chevron-right> 只是作为普通字符串被输出,Blade没有机会编译解析这个组件标签。而上面两种方案都是通过Blade的@include或组件调用机制,让Blade完整处理所有模板指令和组件,自然能正常渲染图标。

内容的提问来源于stack exchange,提问作者アリ・ナディム

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:30:46