由于数组到字符串的转换,Laravel Validator失败

时间:2014-09-05 18:02:07

标签: php validation laravel-4

我试图验证此输入:

$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;
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

刚刚发现我有Ardent的$forceEntityHydrationFromInput = true,我的输入无法直接从Input提取以进行验证,因为它是作为部分引用值的数组提交的。

要解决此问题,请更改为$forceEntityHydrationFromInput = false并使用标准输入验证程序,而不是依赖Ardent的魔力。

有时聪明的软件包太聪明了。