Mat*_*ias 3 php validation laravel laravel-livewire
我尝试在livewire组件中定义一些验证规则来验证一些 FormData:
protected $rules = [
'website' => 'url|nullable',
'zipcode' => 'regex:/\b\d{5}\b/|nullable',
'founding_year' => 'required|digits:4|integer|min:1700|max:2020',
];
Run Code Online (Sandbox Code Playgroud)
在我需要验证变量的值或一般动态值之前,这项工作非常有效。
例如:将max属性从硬编码的2020 年更改为当前年份:
protected $rules = [
...
'founding_year' => 'required|digits:4|integer|min:1700|max:'. date('Y'),
];
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会在异常中解决:
Symfony\Component\ErrorHandler\Error\FatalError
常量表达式包含无效操作
有人知道如何解决这个问题吗?
在 PHP 中直接声明属性值时不能调用函数或方法。
使用 Livewire,您可以指定一个rules()返回规则数组的方法 - 这允许您在规则中使用函数。在内部,Livewire 现在将运行该方法的结果,而不是获取受保护的$rules数组。这意味着您仍然可以使用Livewire 附带的$this->validate()和$this->validateOnly()方法。
因此,不要定义protected $rules;属性,而是声明rules()方法,
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"),
];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |