我正在尝试使用laravel验证一些数据,我已经在模型中实现了这样的数据:
class Collection扩展了Model { protected $ guarded = ['id'];
public $allowedDataTypes = [
'Date',
'Text',
'Number',
'Email',
'Checkbox',
'Image',
'File',
];
25 public static $rules = array([
26
27 'fields.*.fieldName' =>
28 [
29 'unique' => 'Please ensure that the fields are uniquely named.',
30 'required' => 'You must specify a name for your fields.'
31 ],
32
33 'fields.*.dataType' =>
34 [
35 'required', 'You must specify a data type for your fields.',
36 'in:'.implode(',', $allowedDataTypes)
37 ]
38
39 ]);
然而,在提交数据时,据说让它经历了这个验证,它给了我在标题中看到的错误:
常量表达式包含{link to中的无效操作 模型}:39
我也对代码行进行了编号,我不确定为什么会这样做。
提前感谢任何指导。
答案 0 :(得分:1)
不可能在类变量声明中使用implode函数。这是因为类变量是在运行时之前启动的。
如果要使用implode函数,可以使用函数或使用构造函数。
例如:
public function rules()
{
return [
'fields.*.fieldName' => [
'unique' => 'Please ensure that the fields are uniquely named.',
'required' => 'You must specify a name for your fields.'
],
'fields.*.dataType' => [
'required', 'You must specify a data type for your fields.',
'in:'.implode(',', $this->allowedDataTypes)
]
];
}