laravel - Laravel livewire 属性嵌套绑定未显示表单字段中的值
问题描述
我有一个用于显示个人资料信息的 livewire 组件。在我的表单中,我将值绑定到wire:model
嵌套数据。但它没有显示文本框中的值。
零件
<?php
namespace App\Http\Livewire\Profile;
use Livewire\Component;
class BasicInfo extends Component
{
public $user;
public function mount()
{
$this->user = auth()->user();
}
public function render()
{
return view('livewire.profile.basic-info');
}
}
刀片文件
<div class="container">
<div class="row">
<div class="col-12">
<h1>{{ __('Profile Information') }}</h1>
</div>
<div class="col-6">
<form>
<div class="form-group row">
<label for="name" class="form-label">Name</label>
<input type="text" wire:model="user.name" class="form-control" disabled>
</div>
<div class="form-group row">
<label for="phone" class="form-label">Phone</label>
<input type="text" wire:model="user.phone" class="form-control" disabled>
</div>
<div class="form-group row">
<label for="location" class="form-label">Location</label>
<input type="text" wire:model="user.location.name" class="form-control" disabled>
</div>
</form>
</div>
</div>
</div>
当我dd($user)
在刀片文件中执行此操作时,它会正确返回用户对象。
当我直接将值分配给组件中的公共属性并在刀片中引用它时,它也在工作。
Laravel:8.x Livewire:2.2
解决方案
要使用wire:model
Eloquent 属性绑定,您需要$rules
在组件上使用该属性:
protected $rules = [
'user.name' => 'required',
'user.phone' => 'required',
];
该数组为组件上的字段设置默认验证规则,并充当可以绑定属性的白名单。
关于你的user.location.name
,Livewire 目前不支持像这样嵌套相关的模型字段。您需要将其安装location
到模型上的另一个属性中并绑定到该属性。
推荐阅读
- python - 在 asyncio.gather 中内联链式异步协程
- oracle - 使用新的 SQL 凭据连接到 Oracle 12c 时出现 ORA-06502
- oracle - Oracle SQL 开发人员面试问题
- c# - 尝试运行统一游戏时出现此错误
- javascript - 为什么我没有得到任何回应?
- java - 如何使用类扩展列表首选项
- c# - 处理稍后可能不存在的属性的最佳方法
- javascript - 向对象添加新对象。架构类型是地图
- ssh - SSH 到服务器并从那里 rsync - 使用非标准端口
- javascript - 在 chalk.js 中的 forEach() 中获取随机颜色