【发布时间】:2021-07-06 04:00:09
【问题描述】:
我正在尝试创建一个 x-select 组件,我可以在其中传递一组选项作为属性之一。
这里是create.blade.php:
<?php $list = ['Received', 'In Process', 'Repaired', 'Completed', 'Shipped', 'Waiting on Boards', 'In Route'];?>
<x-select id="progress" class="block mt-1 w-full" name="progress" :value="old('progress')" :list="$list" />
这里是组件select.blade.php
@props(['disabled' => false])
<select {{ $disabled ? 'disabled' : '' }} {!! $attributes->merge(['class' => 'rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50']) !!}>
@foreach ($list as $item)
<option @if($item == $value) selected @endif>{{ $item }}</option>
@endforeach
</select>
问题是它在运行$attributes->merge() 时试图解析/打印:list。这似乎不应该是这种情况,因为根据 Laravel 8 Blade 文档,您似乎可以添加一个在运行 $attributes->merge() 时不会打印的 :attribute。见:https://laravel.com/docs/8.x/blade#default-merged-attributes
如果我将 :list 的值更改为普通字符串,它将在运行 $attributes->merge() 时打印该字符串,这与那些文档相反,并且使我无法传递数组,因为它试图修剪数组和失败并出现此错误:
trim() expects parameter 1 to be string, array given
【问题讨论】:
-
无关:
$item应该是{{ $item }}在你的<option>中的刀片内 -
谢谢,我已经更新了我的问题。
标签: php laravel laravel-blade laravel-8