gpt4 book ai didi

php - Laravel Livewire - 常量表达式在 $rules 属性中包含无效操作

转载 作者:行者123 更新时间:2023-12-02 02:31:24 24 4
gpt4 key购买 nike

我试图在我的 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 更改为 当前年份:

 protected $rules = [
...
'founding_year' => 'required|digits:4|integer|min:1700|max:'. date('Y'),
];

不幸的是,这会在异常中解决:

Symfony\Component\ErrorHandler\Error\FatalError

Constant expression contains invalid operations

有人知道如何解决这个问题吗?

最佳答案

在 PHP 中直接声明属性值时不能调用函数或方法。

使用 Livewire,您可以指定一个返回规则数组的 rules() 方法 - 这允许您在规则中使用函数。在内部,Livewire 现在将运行该方法的结果,而不是获取 protected $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"),
];
}

关于php - Laravel Livewire - 常量表达式在 $rules 属性中包含无效操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64987789/

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