如何在不使用控制器的情况下向Laravel 9 Blade组件传递数组或集合?
解决Laravel Blade组件无法传递数组的问题
问题场景
将页面中的用户循环逻辑抽成x-userlist组件后,尝试以下两种方式传递$users数组均失败:
<x-userlist users=$users/> <x-userlist users={{ $users }}/>
问题原因
- 第一种写法未使用冒号绑定,Blade会将
$users识别为字符串字面量,组件收到的是字符串"$users"而非变量值 - 第二种写法通过
{{ }}输出数组,会将数组强制转为字符串(通常显示为"Array"),无法传递原数组
正确解决方法
1. 组件传参修正
使用冒号语法绑定变量,告诉Blade这是一个PHP表达式,以此传递数组:
<body> <x-userlist :users="$users" /> </body>
2. 组件声明接收参数
在userlist.blade.php顶部添加@props声明,明确接收users参数:
@props(['users']) @foreach ($users as $user) <!-- 你的循环渲染内容 --> @endforeach
类组件补充说明
如果使用的是带类的非匿名组件,需在组件类中定义对应公共属性:
// app/View/Components/Userlist.php namespace App\View\Components; use Illuminate\View\Component; class Userlist extends Component { public $users; public function __construct($users) { $this->users = $users; } public function render() { return view('components.userlist'); } }
内容的提问来源于stack exchange,提问作者bart
相关产品推荐
相关产品推荐

