Как заставить Laravel валидацию НЕ сохранять request данные на следующий запрос? (flash-data)
Я создал обычный Validation Request класс:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreCattleTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'cattle_type_name' => 'required',
'cattle_type_max_age' => 'required|integer|min:2|max:20',
];
}
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->after(function ($validator) {
request()->session()->flush();
});
}
}
Но когда валидация не проходит проверку, данные из запроса сохраняются на следующий запрос.
Это поведение некорректно для меня, потому что я использую инпуты с этими name в модалке, которая может вызываться из разных строк.
Следовательно, если вызвать эту модалку из любой строки, то появятся эти некорректные данные в инпуте с предыдущего запроса, несмотря на то что я не использую old() метод в этих инпутах.
(Строками я называю табличные tr теги, в которых может быть кнопка edit или store, которые и вызывают модалку)
Я пытался использовать такой код в этом классе
public function withValidator($validator)
{
$validator->after(function ($validator) {
request()->session()->flush();
});
}
Но это не работает.
То что мне нужно можно достичь, если написать следующий код в контроллере:
$validator = Validator::make($request->all(), [
'cattle_type_name' => 'required',
'cattle_type_max_age' => 'required|integer|min:0|max:20',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator);
}
В этом случае если валидация не проходит, данные из инпутов не сохраняются на следующий запрос.
Но я хочу переместить эту логику в Form Request класс, чтобы не занимать этим контроллер.
К сожалению я не смог найти способа в документации Laravel или на каких-либо форумах как это сделать. Знаю что есть методы типа $request->except(), $request->only() - в которые можно передать нужные данные из запроса, но мне нужно чтобы все данные не сохранялись, что не позволяют сделать данные методы.
Есть какие-либо идеи?