2017-02-23 408 views
0

У меня есть массив данных, как показано ниже:правила изображения всегда возвращает ошибку в Laravel

array:2 [▼ 
    "pg_location_id" => 10 
    "image_location" => "pg_images/2017/10/pg-90d7e835d382a91d1635403f17b6fa76.jpg" 
] 

и rules является:

public static $rules = [ 
     'pg_location_id' => 'required|exists:pg_locations,id', 
     'image_location' => 'required|image|max:500', 
    ]; 

мой контроллер, где я пытаюсь вставить изображение (s) является:

if ($request->hasFile('image')) { 

       for($i = 0; $i < count($request->image); $i++) { 
        if ($request->file('image')[$i]->isValid()) { 
         $fileName = 'pg-'.md5(uniqid()).'.'.$request->file('image')[$i]->getClientOriginalExtension(); 
         $request->file('image')[$i]->move($destination_path, $fileName); 
         $img_data['image_location'] = 'pg_images/'.date('Y').'/'.$pg_location->id.'/'.$fileName; 

         $validator = Validator::make($img_data, PgLocationImage::$rules); 
         if ($validator->fails()) return Redirect::back()->withErrors($validator); 
         PgLocationImage::create($img_data); 
        } 
       } 
      } 

Но он всегда говорит

Место изображение должно быть изображение

ответ

1

для правила изображения необходимо передать переменную файла, но вы передаете простую строковую переменную. первая проверка в контроллере, на первой линии печати следующим образом:

public function uploadImage(Request $request) 
{ 
    dd($requesti->hasFile('image_location')); 
    $rules = []; 
    ...... 
} 

Если есть файл, то он возвращает истину, иначе вы не можете передать переменную файла в запросе.

Смежные вопросы