如何在Laravel组件中传递数组变量?解决未定义变量报错
解决Laravel组件接收数组变量提示未定义的问题
你当前的问题核心是:Laravel组件默认不会自动继承父视图的变量,必须显式传递才能让组件获取到变量值。
解决方案:通过组件属性传递变量
修改调用组件的代码,把$breadcrumbs作为属性传递给组件,注意属性名前要加冒号:,用于告诉Laravel解析变量而非静态字符串:
@php $breadcrumbs = [ [ 'name' => 'Trainees', 'link' => route('trainee.list') ] ]; @endphp @section('breadcrumbs') {{-- 用冒号标记传递的是变量 --}} <x-breadcrumbs :breadcrumbs="$breadcrumbs"/> @endsection
组件端接收并使用变量
在你的breadcrumbs组件文件(通常位于resources/views/components/breadcrumbs.blade.php)中,需要先声明接收该属性:
{{-- 声明要接收的breadcrumbs属性 --}} @props(['breadcrumbs']) {{-- 现在可以正常遍历使用$breadcrumbs变量 --}} @foreach($breadcrumbs as $crumb) <a href="{{ $crumb['link'] }}">{{ $crumb['name'] }}</a> {{-- 可选:添加面包屑分隔符 --}} @unless($loop->last) / @endunless @endforeach
关键注意事项
- 冒号
:不能省略:如果不加冒号,传递的是字符串"$breadcrumbs",而非变量的实际数组值。 - 组件必须声明
@props:若组件未声明接收该属性,即使传递了变量也无法访问,依然会提示变量未定义。
内容的提问来源于stack exchange,提问作者darshita_baldha
相关产品推荐
相关产品推荐

