Laravel livewire 属性 嵌套绑定未在表单字段中显示值
Laravel livewire property nested binding not showing the value in the form field
我有一个用于显示个人资料信息的 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');
}
}
blade 文件
<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>
当我在 blade 文件中执行 dd($user)
时,它会正确返回用户 object。
当我直接将值分配给组件中的 public 属性 并在 blade 中引用它时,它也有效。
Laravel: 8.x
活线:2.2
要使用 wire:model
Eloquent 属性 绑定,您需要在您的组件上使用 $rules
属性:
protected $rules = [
'user.name' => 'required',
'user.phone' => 'required',
];
此数组为您的组件上的字段设置默认验证规则,并充当可以绑定属性的白名单。
关于您的user.location.name
,Livewire 目前不支持嵌套相关的模型字段。您需要将 location
安装到模型上的另一个 属性 并绑定到它。
我有一个用于显示个人资料信息的 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');
}
}
blade 文件
<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>
当我在 blade 文件中执行 dd($user)
时,它会正确返回用户 object。
当我直接将值分配给组件中的 public 属性 并在 blade 中引用它时,它也有效。
Laravel: 8.x 活线:2.2
要使用 wire:model
Eloquent 属性 绑定,您需要在您的组件上使用 $rules
属性:
protected $rules = [
'user.name' => 'required',
'user.phone' => 'required',
];
此数组为您的组件上的字段设置默认验证规则,并充当可以绑定属性的白名单。
关于您的user.location.name
,Livewire 目前不支持嵌套相关的模型字段。您需要将 location
安装到模型上的另一个 属性 并绑定到它。