Я пытаюсь сделать базовую проверку после отправки формы, я использую vuejs вместе с laravel, но в самом клинке есть форма, которая отправляется.
После отправки мы переходим к контроллеру и проверяем отправленные пользователем материалы. СЕЙЧАС возникает проблема, когда один из входов пуст, а затем страница переходит в цикл перенаправления, в результате чего возникает ERR_TOO_MANY_REDIRECTS
.
файл клинка, который нам нужно вернуть, называется «joborder / create», и мы должны отправить его в функцию хранения для проверки валидации. Мне пришлось использовать create как сообщение, поэтому я перезаписал значение по умолчанию из ресурса.
Понятия не имею, что вызывает петлю. Я использую laravel 5.2
Любая помощь была бы весьма заметной.
Маршрут :
Route::resource('joborder' ,'JoborderController');
Route::POST('joborder/create','JoborderController@create');
Файл Blade:
<div class = "pubdiv col-md-12" >
{!! Form::open(['action' => 'JoborderController@store','method' =>'POST']) !!}
{{ csrf_field() }}
<h3>basicinput</h3>
<div class = "row">
<div class = "col-sm-3 col-xs-6 pull-right">
<div class = "form-group">
{!! Form::label('company' , 'ComapnyName')!!}
<input type = "text" class = "form-control " name = "owner" value = "{{$company_owner->name}}" disabled>
</div>
<div class = "form-group ">
<input type='submit' value = "finish" name = "submit" style = "margin-top:4px" class = "col-md-12 btn btn-t-primary btn-theme">
</div>
{!! Form::close() !!} <!-- end form post a job -->
Контроллер:
if (session()->get('role_active') != 1){
return redirect('thehood')->with('error','NO CAN DO');
}else{
$this->validate($request, [
'alljobs_id' => 'required',
'joborder_id' => 'required',
'notes'=>'required',
'state' =>'required',
'city' => 'required',
'type' => 'required',
'salary' => 'required',
'created_at' => 'required'
]);
// after moving these remove the keys from request
$alljobs_id = $request->alljobs_id;
$joborder_id = $request->joborder_id;
$request->request->remove('joborder_id');
$request->request->remove('alljobs_id');
$check_prof + $check_prof_custom = 9;
if (($check_prof + $check_prof_custom < 5 ) || ($check_behv + $check_behv_custom < 5 )){
return redirect('joborder/create')->with('error','5 input is required!');
}
}
ОБНОВИТЬ: Я заметил, что у меня есть как post, так и get метод, который был неправильным, поэтому я создал новую функцию под названием create with (s)
| | POST | joborder/crawltitle | | App\Http\Controllers\JoborderController@crawltitle | web |
| | GET|HEAD | joborder/create | joborder.create | App\Http\Controllers\JoborderController@create | web |
| | POST | joborder/creates | | App\Http\Controllers\JoborderController@creates | web |
| | POST | joborder/moveAttrib
новая функция теперь, если проверка не удалась, она перенаправляет меня на страницу 404, но моя адресная строка - / joborder / created /
У вас есть дополнительная закрывающая фигурная скобка
Не могли бы вы запустить php artisan route:list
и добавить результат в свой пост?
обновил пост
Ваша проблема в том, что у вас есть метод GET на вашем ресурсе
Route::resource('joborder' ,'JoborderController');
Когда вы вызываете функцию перенаправления redirect('joborder/create')
, вы перенаправляетесь на указанный выше ресурс с аргументом create
.
Вместо этого попробуйте redirect('joborder')
.
Надеюсь, это поможет.
это похоже на один шаг ближе, мне нужно, чтобы пользователь был перенаправлен на joborder / create, а не на сам joborder
у вас есть этот маршрут как тип GET? тот, который вы показываете нам, это POST, вы не можете перенаправить на него
нет, я изменил маршрут на новый под названием «joborder / created», теперь я вижу ошибки, но на странице 404! и это происходит на «$ this-> validate», когда есть пустое значение!
почему вы не создаете заявку в магазин? это валидатор, но он работает до метода контроллера. проверьте эту ссылку laravel.com/docs/5.7/validation#creating-form-requests
так что с этим мне не нужно делать проверку на контроллере, верно? и как мне реализовать это только для одной из моих функций?
Правильно! просто замените функцию (Request $ request) на функцию (App \ Path \ MyStoreRequest $ request) и все готово.
Я не вижу никакого маршрута GET к joborder / create, как вы можете перенаправить на него?