Проверка запроса Laravel не показывает сообщений об ошибках
После использования группового промежуточного программного обеспечения я не могу получить доступ к сообщениям об ошибках. Мешки ошибки возвращается пустая.
Раньше не было никаких проблем.
Я исследовал, некоторые пользователи решили эту проблему, изменив http/kernel.php
\Осветить\сессии\промежуточного слоя\StartSession::класс $middlewareGroups до $промежуточного слоя.
Однако это не работает для меня.
Также $validated = $request->validated();> функция не возвращает ошибку проверки. В моем классе CreditcardRequest у меня есть атрибуты, сообщения, функции правил. Если проверка завершается неудачно, эти сообщения должны быть показаны. ранее, когда метод validated(); выполнялся на контроллере, он показывал сообщения, если форма пуста. У меня есть 20 страниц, все они работают, прежде чем группировка промежуточного программного обеспечения.
Лезвие Кредитной Карты
<div class="messages">
@if ($errors->any())
<div class="row mt-3">
<div class="col-md-12">
<div class="alert alert-warning alert-dismissable" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h3 class="alert-heading font-size-h4 font-w400">Error!</h3>
@foreach ($errors->all() as $error)
<p class="mb-0">{{ $error }}</p>
@endforeach
</div>
</div>
</div>
@endif
</div>
CreditcardRequest
public function attributes()
{
return [
'cc_name' => 'CC Owner',
..
];
}
public function messages()
{
return [
'required' => 'Required: :attribute',
...
];
}
public function rules()
{
return [
'cc_name' => 'required|max:128',
];
}
Контроллер
public function doPaySection(CreditcardRequest $request)
{
$validated = $request->validated();
$cc = TRUE;
if ($cc):
return redirect('/pay_success')->with('success', 'success');
else:
return redirect('/pay_error')->with('error', 'error');
endif;
}
web.php
Route::group(['middleware' => ['client.role:guest']], function () {
Route::get('/login', 'HomepageController@showLogin')->name('login');
Route::post('/login', 'HomepageController@doLogin');
Route::post('/register', 'HomepageController@doRegister');
Route::get('/register', 'HomepageController@showRegister')->name('register');
});
логин.лезвие
@if ($errors->any())
<div class="row mt-3">
<div class="col-md-12">
<div class="alert alert-warning alert-dismissable" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h3 class="alert-heading font-size-h4 font-w400">Hata!</h3>
@foreach ($errors->all() as $error)
<p class="mb-0">{{ $error }}</p>
@endforeach
</div>
</div>
</div>
@endif
Контроллер
public function doLogin(Request $request)
{
if (auth()->guard('client')->attempt(['email' => request('email'), 'password' => request('password')])) {
return redirect()->intended('/');
} else {
return redirect()->back()->with('error', 'error');
}
}
Ответы - Проверка запроса Laravel не показывает сообщений об ошибках / Laravel request validation doesn't show error messages

11.01.2020 02:51:11
Ваш сможете получить в session('error')
from ниже
return redirect()->back()->with('errors', 'error');
Таким образом, ваш код будет выглядеть следующим образом
@if (session('errors'))
<div class="row mt-3">
<div class="col-md-12">
<div class="alert alert-warning alert-dismissable" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h3 class="alert-heading font-size-h4 font-w400">Hata!</h3>
@foreach (session('errors') as $error)
<p class="mb-0">{{ $error }}</p>
@endforeach
</div>
</div>
</div>
@endif

11.01.2020 03:16:47
Код, который у вас есть в данный момент, не добавит сообщение к $errors
MessageBag
, он просто добавит значение в Сеанс под названием error.
Если вы хотите добавить ошибку в пакет сообщений, вы можете просто бросить ValidationException
, который перенаправит back
с этим сообщением:
public function doLogin(Request $request)
{
if (auth()->guard('client')->attempt($request->only('email', 'password'))) {
return redirect()->intended('/');
}
throw ValidationException::withMessages([
'error' => 'The error message',
]);
}
Не забудьте импортировать ValidationException
с помощью:
use Illuminate\Validation\ValidationException;

13.09.2020 10:48:42
Можете ли вы попробовать использовать этот заголовок в своем запросе. Особенно если вы бьете от почтальона.
Accept:application/json
Прежде чем использовать это, я получал токен csrf в случае недопустимых запросов.