我试图验证此输入:
$values = [
'id' => $input['id'][$i],
'template_id' => $input['template_id'][$i],
'schedulable_id' => $id,
'schedulable_type' => $type,
'order_by' => $i
];
违反我的Schedule类中的这些规则:
public static $rules = [
'template_id' => 'required|integer|exists:templates,id',
'schedulable_id' => 'required|integer',
'schedulable_type' => 'required|in:Item,Order',
'order_by' => 'integer'
];
当我执行以下操作时,我总是在" /laravel/vendor/laravel/framework/src/Illuminate/Validation/Validator.php"中得到一个数组到字符串转换错误;在第905行:
$validator = Validator::make($values, Schedule::$rules);
if ($validator->fails()) {
$errors[$i] = $validator->messages();
continue;
}
为什么会这样?
答案 0 :(得分:1)
刚刚发现我有Ardent的$forceEntityHydrationFromInput = true
,我的输入无法直接从Input
提取以进行验证,因为它是作为部分引用值的数组提交的。
要解决此问题,请更改为$forceEntityHydrationFromInput = false
并使用标准输入验证程序,而不是依赖Ardent的魔力。
有时聪明的软件包太聪明了。