Проверка запроса Laravel не показывает сообщений об ошибках


Проверка запроса Laravel не показывает сообщений об ошибках

11.01.2020 02:44:42 Просмотров 5 Источник

После использования группового промежуточного программного обеспечения я не могу получить доступ к сообщениям об ошибках. Мешки ошибки возвращается пустая.

Раньше не было никаких проблем.

Я исследовал, некоторые пользователи решили эту проблему, изменив 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">&times;</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">&times;</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

Niklesh Raut

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">&times;</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
Является ответом!
Rwd

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;
Amaar Hassan

13.09.2020 10:48:42

Можете ли вы попробовать использовать этот заголовок в своем запросе. Особенно если вы бьете от почтальона.

Accept:application/json

Прежде чем использовать это, я получал токен csrf в случае недопустимых запросов.

enter image description here

Помочь в развитии проекта:
Закрыть X