在我应用新的 livewire V2 编程风格之前,我有一个连接到模型单独属性的表单。为了触发字段的实时验证,我在组件中使用了它(例如 name 属性):
public function updatedName(){
$this->validate(['name' =>'required|max:127']);
}
Run Code Online (Sandbox Code Playgroud)
name 是名为Malt的 Model 的属性。我的问题是:如何修改这个 updatedName() 函数?
我已经明白我应该将函数重命名为 updatedMaltName,因此我尝试了这个。
public function updatedMaltName(){
$this->validate(['name' =>'required|max:127']);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。相反,只要我在字段中键入字符(这与应该发生的情况相反),它就会显示错误“名称字段是必需的”,并且即使我清空该字段也永远不会隐藏此错误。
我也试过这个
public function updatedMaltName(){
$this->validate(['malt.name' =>'required|max:127']);
}
Run Code Online (Sandbox Code Playgroud)
但这根本行不通。
$rules在组件类的属性中定义规则集。
protected $rules = [
'malt.name' => 'required|max:127',
];
Run Code Online (Sandbox Code Playgroud)
您现在可以挂钩updated()方法和validateOnly()刚刚更新的字段。现在,这将验证模型上正在更新的任何字段,规则集在$rules.
public function updated($property)
{
$this->validateOnly($property);
}
Run Code Online (Sandbox Code Playgroud)
该$property参数是要更新的字段的名称,因此,例如malt.name。
您当然可以连接到您正在更新的特定属性,并仅验证该字段。这假设您在具有属性$malt的属性name中有一个模型。
public function updatedMaltName()
{
$this->validateOnly('malt.name');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |