我有这个错误使用livewire和我真的不明白有什么问题
在类中,我声明了一个$dominio_id
公共变量,我的组件将绑定到该变量。我还有一个$dominios
变量,我从Dominio
模型中获取数据,就像...
class Software extends Component {
public $dominio_id, $dominios;
...
public function mount() {
$this->dominios = Dominio::orderBy('name')->get();
$this->dominio_id = 1;
...
}
}
在blade中,我有以下内容:
<select wire:model="dominio_id">
@foreach ($dominios as $d)
<option value="{{ $d->id }}">{{ $d->path }}</option>
@endforeach
</select>
它呈现得很好,如果我将dominio_id
更改为表中的任何id,它都会被选中,所以没有问题。现在,当我选择一个不同的值时,它会抛出错误:Attempt to read property "id" on array
跟踪表明问题在这里:
<option value="{{ $d->id }}">{{ $d->path }}</option>
如果我取出wire:model
,问题就消失了,但当然我不能绑定select
。
我做过很多次同样的事情,从来没有遇到过这种错误。
我也试过,虽然我知道不需要添加$rules
var:
protected $rules = [
'dominio_id' => 'required',
];
但也不管用。
如果我使用inspect工具,我看到select - option
良好:
你知道吗?
1条答案
按热度按时间tpxzln5u1#
你有两个选择来解决这个问题(这两个选项中的一个就足够了):
1:从
mount()
中删除$this->dominios
,并添加到render()
中,如下所示:2:在你的blade中你必须使用array而不是collection,像这样:
原因是livewire不能通过集合类型传递参数到视图(因为js不能渲染),所以当你在
mount()
中使用集合时,livewire在下一个请求中将集合转换为数组。