Flash-сообщения сессий Laravel не отображаются на производстве (Laravel Forge) - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть форма Laravel Blade, которая не отображает сообщения об ошибках флэш-сессии на моем производственном сайте .Ранее он выдавал 419 сообщение об ошибке «Извините, ваш сеанс истек. Пожалуйста, обновите и попробуйте снова.Мне удалось очистить это, так что форма отправляет, очистив кэш и composer dump-autoload.

Это форма для отображения сеансов.Работает локально, я на L5.7.9.

<form method="POST" action="{{ route('candidates.store') }}" class="form">
    @csrf

    @if(session('message'))
        <div class="alert alert-success">
            {{ session('message') }}
        </div>
    @endif

    @if (session('login_error'))
        <div class="alert alert-danger" role="alert">
            {{ session('login_error') }}
        </div>
    @endif

    @if ($errors->any())
        <div class="alert alert-danger" role="alert">
            Woops had some problems saving
        </div>
    @endif

В моем .env файле у меня есть:

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_DOMAIN=employbl.com
QUEUE_DRIVER=sync

Затем в методе хранилища контроллера я имею:

public function store(Request $request)
{
    $validator = $request->validate([
        'first_name'         => 'required',
        'last_name'          => 'required',
        'email'              => 'email|required|unique:users',
        'linkedin_url'       => 'required|url',
        'phone_number'       => 'required',
        'work_authorization' => 'required',
        'city'               => 'required',
        'state'              => 'required'
    ]);

    $candidate         = new User($request->all());
    $candidate->active = false;
    $candidate->save();

    return redirect()->route('candidates.landing')->with('message', 'Successfully applied to join Employbl network!');
}

Для маршрутов у меня нет группы маршрутов:

Route::get('/candidates', 'CandidateController@landing')->name('candidates.landing');
Route::post('/candidates', 'CandidateController@store')->name('candidates.store');

php artisan route: список показывает, что я использую веб-промежуточное ПО только один раз:

|        | POST     | candidates                                                                                 | candidates.store            | App\Http\Controllers\CandidateController@store                             | web                                                                                                                                                                               |

Флеш-сообщения работают локально, но когда я отправляю форму в производство (развернутую с Laravel Forge), форма отправляется, но флэш-сообщения не отображаются.Что я могу сделать, чтобы сообщения сеанса появлялись в рабочей среде и почему это происходит?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Это проблема?

     return redirect()
            ->route('candidates.landing')
            ->with('message', 'Successfully applied to join Employbl network!');
    // I think with takes [](array) so, 
     return redirect()
            ->route('candidates.landing')
            ->with(['message' => 'Successfully applied to join Employbl network!']);
  //
  //
  // But why are't you doing like this 
  //
  //
  return back()->with([
          'message' => 'Successfully applied to join Employbl network!'
        ]);
  //
  //
  //
  // And yes Session::has('message') or \Session::has('message') is a good way to check in the blade
0 голосов
/ 22 февраля 2019

Оказывается, мне нужно было запустить php artisan cache:clear, чтобы избавиться от существующей информации о сеансе.Больше информации здесь: https://laracasts.com/discuss/channels/forge/419-error-when-submitting-form-in-production-sorry-your-session-has-expired-please-refresh-and-try-again#reply=494157

0 голосов
/ 20 февраля 2019

Вам не хватает некоторых методов (имеет), чтобы проверить, если у вас есть сеанс с этим именем и (получить), чтобы получить значение.


@if(session::has('message'))
        <div class="alert alert-success">
            {{ session::get('message') }}
        </div>
    @endif

    @if (session::has('login_error'))
        <div class="alert alert-danger" role="alert">
            {{ session::get('login_error') }}
        </div>
    @endif



    @if ($errors->any())
        <div class="alert alert-danger" role="alert">
            Woops had some problems saving
        </div>
    @endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...