【发布时间】:2021-12-23 10:48:24
【问题描述】:
我考虑过在一个类中为我的应用程序的不同部分定义验证规则作为静态变量。例如,
$VALIDATION_RULES = [
'signatures' => [
'first_name' => ['required', 'max:255', 'required','string'],
'last_name' => ['required', 'max:255', 'required', 'string'],
'enabled' => [ 'required', Rule::in(['on', 'off']) ],
'signature_file' => ['required', 'mimes:png,jpeg,jpg', 'max:1024'],
'operator_id' => ['required', 'numeric'],
],
];
但是,我得到了这个错误。
Symfony\Component\ErrorHandler\Error\FatalError
Constant expression contains invalid operations
这是由于
与任何其他 PHP 静态变量一样,静态属性只能是 在 PHP 5.6 之前使用文字或常量初始化;表达式 不允许。在 PHP 5.6 及更高版本中,适用与 const 相同的规则 表达式:一些有限的表达式是可能的,只要它们可以 在编译时进行评估。
根据php官方文档。 这样做的正确方法是什么?
P.S.:这个变量在类中定义为公共和静态成员。在代码中,无论我需要验证输入,我都可以调用
$validated_input = $request->validate($VALIDATION_RULES['signatures']);
这样,我可以将所有规则集中在一个类中。
【问题讨论】:
-
您可以使用全局范围,它将执行每个模型请求。
-
你在哪里定义了
$VALIDATION_RULES。你能分享整个文件吗 -
你想拥有一部分代码并在其他 FormRequests 中也使用它吗?
-
我建议您创建自己的验证器模型或 FormRequest,您可以使用它来扩展其他验证器或表单请求
-
@ManojKiranAppathurai 在类中作为公共静态变量