使用<livewire>元素向Livewire组件传数组失败,Blade指令可正常传值
Livewire标签传递数组参数的解决办法
错误原因分析
- 直接使用
classes="{{ $classes }}"时,Blade会尝试将数组$classes转换为字符串输出,触发htmlspecialchars()错误——因为该函数仅接受字符串类型参数,无法处理数组。 - 错误添加冒号加引号的写法(如
:classes="{{ $classes }}")会导致语法冲突,因为冒号前缀后应直接跟PHP表达式,无需额外包裹{{ }}和引号。
正确写法
在需要传递数组/变量的属性前添加冒号:,并直接使用变量名(不要加引号和{{ }}),让Livewire识别为PHP表达式传递:
<livewire:admin.syllabi :page="$page" type="syllabus" searchFields="title, description" :classes="$classes" />
补充说明
- 对于字符串字面量参数(如
type、searchFields),直接写字符串值即可,无需冒号; - 若需传递构造的数组,也可直接写表达式,例如:
:filters="['status' => 'published', 'category' => $category]"。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

