我尝试在我的中定义一些验证规则livewire
组件来验证一些 FormData:
protected $rules = [
'website' => 'url|nullable',
'zipcode' => 'regex:/\b\d{5}\b/|nullable',
'founding_year' => 'required|digits:4|integer|min:1700|max:2020',
];
在我需要验证变量的值或一般动态值之前,这项工作非常有效。
例如:改变max
来自硬编码的属性2020 to the 今年:
protected $rules = [
...
'founding_year' => 'required|digits:4|integer|min:1700|max:'. date('Y'),
];
不幸的是,这会在异常中解决:
Symfony\Component\ErrorHandler\Error\FatalError
常量表达式包含无效操作
有人知道如何解决这个问题吗?
在 PHP 中直接声明属性值时不能调用函数或方法。
使用 Livewire,您可以指定rules()
方法返回规则数组 - 这允许您在规则中使用函数。在内部,Livewire 现在将运行该方法的结果,而不是获取受保护的$rules
大批。这意味着您仍然可以连接到$this->validate()
and $this->validateOnly()
Livewire 附带的方法。
所以不要定义你的protected $rules;
属性,声明rules()
method,
public function rules()
{
return [
'website' => 'url|nullable',
'zipcode' => 'regex:/\b\d{5}\b/|nullable',
'founding_year' => 'required|digits:4|integer|min:1700|max:'.date("Y"),
];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)