Измените свою функцию проверки.Вместо использования $this->validate()
, используйте метод $request->validate()
:
$request->validate([
'pro_name'=> 'required',
'pro_price'=> 'required',
'pro_info'=> 'required',
'user_id' => 'required|integer',
'image'=>'image|mimes:png,jpg,jpeg|max:10000'
]);
Если правила проверки пройдут, ваш код будет работать нормально;однако, если проверка не пройдена, будет выдано исключение, и правильный ответ об ошибке будет автоматически отправлен обратно пользователю.
Другое решение:
Добавить
use Validator;
для вашего класса.
$validator = Validator::make($request->all(), [
'pro_name'=> 'required',
'pro_price'=> 'required',
'pro_info'=> 'required',
'user_id' => 'required|integer',
'image'=>'image|mimes:png,jpg,jpeg|max:10000'
]);
if($validator->fails()){
//Validation does not pass logic here
}else{
//
}
Еще один: Создание запроса формы , с
phpartisan make: request RequestName
Файл будет создан в каталоге app\Http\Requests
.
В этом файле добавьте свои правила к методу rules
:
public function rules()
{
return [
'pro_name'=> 'required',
'pro_price'=> 'required',
'pro_info'=> 'required',
'user_id' => 'required|integer',
];
}
Измените метод authorize
, чтобы получить true
:
public function authorize()
{
return true;
}
В вашем методе store
поменяйте Request $request
на RequestName $request
.Теперь вам не нужно проверять метод $request
inside store
.Он будет сохранен, только если проверка прошла успешно;
Ваш метод store
теперь должен выглядеть следующим образом:
public function store(RequestName $request)
{
$formInput=$request->except('image');
$image=$request->image;
if($image){
$imageName=$image->getClientOriginalName();
$image->move('images', $imageName);
$formInput['image']=$imageName;
}
products_model::create(array_merge(
$formInput, ['user_id' => Auth::user()->id]
));
return redirect()->back();
}
Не забудьте use
App \ Http \ Requests \RequestName
Если проверка не пройдена, будет сгенерирован ответ на перенаправление, чтобы отправить пользователя обратно в его предыдущее местоположение.Ошибки также будут мигать в сеансе, чтобы они были доступны для отображения.Если запрос был запросом AJAX, пользователю будет возвращен HTTP-ответ с кодом состояния 422, включая JSON-представление ошибок проверки.Вы можете узнать больше о проверке запроса здесь .
[РЕДАКТИРОВАТЬ] Я изменяю правило users_id
на user_id
, чтобы соответствовать вашему внешнему ключу.Я думаю, что вы сделали опечатку здесь, когда вы задали вопрос.
Надеюсь, это поможет.