微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Livewire 2中实施实时验证?

如何解决如何在Livewire 2中实施实时验证?

在应用新的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

您当然可以插入要更新的特定属性,并仅验证该字段。假设您在属性$malt中有一个模型,其中有一个属性name

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。