gpt4 book ai didi

laravel-livewire - 如何在 Livewire 2 中实现实时验证?

转载 作者:行者123 更新时间:2023-12-04 01:12:14 25 4
gpt4 key购买 nike

在我应用新的 livewire V2 编程风格之前,我有一个连接到模型的各个属性的表单。为了触发字段的实时验证,我在组件中使用了这个(例如 name 属性):

public function updatedName(){
$this->validate(['name' =>'required|max:127']);
}

name 是名为 Malt 的模型的属性。我的问题是:如何修改这个 updatedName() 函数?

我已经明白我应该将函数重命名为updatedMaltName,因此我尝试了这个。

public function updatedMaltName(){ 
$this->validate(['name' =>'required|max:127']);
}

但它不起作用。相反,只要我在字段中键入一个字符,它就会显示错误“名称字段是必需的”(这与应该发生的情况相反),并且即使我清空该字段也永远不会隐藏此错误。

我也试过了

public function updatedMaltName(){
$this->validate(['malt.name' =>'required|max:127']);
}

但这根本不起作用。

最佳答案

在组件类的 $rules 属性中定义规则集。

protected $rules = [
'malt.name' => 'required|max:127',
];

您现在可以挂接到刚刚更新的字段上的 updated() 方法和 validateOnly()。现在,这将使用 $rules 中定义的 rulset 验证模型上正在更新的任何字段。

public function updated($property)
{
$this->validateOnly($property);
}

$property 参数是您要更新的字段的名称,例如 malt.name

您当然可以 Hook 到您正在更新的特定属性,并仅验证该字段。这假设您在属性 $malt 中有一个模型,其中包含属性 name

public function updatedMaltName()
{
$this->validateOnly('malt.name');
}

关于laravel-livewire - 如何在 Livewire 2 中实现实时验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64494248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com