andreybold
@andreybold

Почему не сохраняются flash-данные?

Проблема в следующем, при сохранении (метод store контроллера), происходит сохранение сообщения в сессию ( flash()->success('Место сохранено') ), но после редиректа на метод index этого сообщения уже нет. Тоже самое происходит если сохранять данные во flash.
Перенаправлений лишних нет, проверял записью в лог при каждом обращении к сервис-провайдеру, в логе были две записи (первая - сохранение, вторая - после редиректа).

Роуты:
Route::group([
	'prefix' => config('chunker.admin.prefix', 'admin'),
	'namespace' => 'Admin',
	'middleware' => ['admin']
], function () {

	$dir = __DIR__ . '/routes/admin';
	$files = array_slice(scandir($dir), 2);

	foreach ($files as $file) {
		require_once $dir . '/' . $file;
	}

});

// Роут находящийся в routes/admin
Route::group([
    'prefix' => 'places'
], function () {

    Route::get('list', [
        'uses'  => 'PlacesController@index',
        'as'    => 'admin.places',
    ]);

    Route::put('store', [
        'uses'  => 'PlacesController@store',
        'as'    => 'admin.places-store',
    ]);

});


Контроллер:
function index() {
    $this->authorize('places.view');

    $places = Place::get();

    return view('admin.places', compact('places'));
}


function store(Request $request) {
    $this->authorize('places.edit');

    $data =$request->all();
    $data['latitude'] = (float)str_replace(',', '.', $data['latitude']);
    $data['longitude'] = (float)str_replace(',', '.', $data['longitude']);

    Place::create($data);

    flash()->success('Место сохранено');

    return redirect()->route('admin.places')->with('test', '123');
}


Вьюха:
@php( dd( session()->all() ) )

P.S. laravel - 5.2.45
  • Вопрос задан
  • 307 просмотров
Пригласить эксперта
Ответы на вопрос 4
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
А в чем проблема сделать так?
return redirect()->route('admin.places')->withSuccess('Сохранено');


И на странице:
@if($success = session('success'))
   {{ $success }}
@endif
Ответ написан
kentuck1213
@kentuck1213
abler98
@abler98
Software Engineer
Нужно ещё добавить middleware - web:
Route::group([
  'prefix' => config('chunker.admin.prefix', 'admin'),
  'namespace' => 'Admin',
  'middleware' => ['web', 'admin'] // Вот тут
], function () {

  $dir = __DIR__ . '/routes/admin';
  $files = array_slice(scandir($dir), 2);

  foreach ($files as $file) {
    require_once $dir . '/' . $file;
  }

});
Ответ написан
andreybold
@andreybold Автор вопроса
Кому интересно, нашлось решение. Точнее невнимательность и неопытность работы с laravel. Оказывается на этот роут и ему подобные роуты был навешан дважды посредник web, и при обработке, сессия пересоздавалась, поэтому в ответе была уже новая, чистая сессия, в которой не было никаких данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы