Я пробовал искать в Google и видел другие вопросы, размещенные на этом форуме, но не смог найти решения для своей проблемы. Я использую метод Jquery ajaxForm для отправки формы. Моя форма также содержит одно поле файл, которое можно использовать для загрузки изображения. Я определил проверку в своей модели. Но проблема в том, что даже если я загружаю правильный файл jpg
, я все равно получаю сообщение об ошибке, которое
Argument 1 passed to Illuminate\\Validation\\Factory::make() must be of the type array, object given.
Javascript-код
$('#create_form').ajaxForm({
dataType:'JSON',
success: function(response){
alert(response);
}
}).submit();
Код контроллера
if ($file = Input::file('picture')) {
$validator = Validator::make($file, User::$file_rules);
if ($validator->fails()) {
$messages = $validator->messages();
foreach ($messages->all(':message') as $message) {
echo $message; exit;
}
return Response::json(array('message'=>$response, 'status'=>'failure'));
} else {
// do rest
}
}
Код модели
public static $file_rules = array(
'picture' => 'required|max:2048|mimes:jpeg,jpg,bmp,png,gif'
);
Почтовый запрос
Я знаю, что моя проверка, определенная в модели, ожидает массив. Но при передаче $file
в валидаторе объект передается. Затем я изменил код следующим образом:
$validator = Validator::make(array('picture' => $file->getClientOriginalName()), User::$file_rules);
Теперь я получаю ошибку:
The picture must be a file of type: jpg, JPEG, png,gif.