перенаправление laravel на предыдущую страницу после входа в систему - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть представление (URL: / equip-planner) с такой формой:

<form action="{{ url('equips') }}" method="POST" class="form-horizontal">
  {{ csrf_field() }}
  <input type="text" id="name" name="name" class="form-control-sm">
  <button type="submit" class="btn btn-primary btn-sm">
    <i class="fa fa-btn fa-plus">Create</i>
  </button>    
</form>

Маршруты:

Route::get('/equip-planner', 'EquipmentController@ep')->name('equip-planner');
Route::resource('equips', 'EquipmentController');

Конструктор контроллера:

public function __construct(){
        $this->middleware('auth', ['except' => ['index', 'show','create','home','ep']]);
    }

Когда я отправляю свою форму, она сначала проверяет, вошел ли пользователь в систему, поскольку метод ресурса store не указан в списке исключений в конструкторе контроллера.Таким образом, если пользователь не вошел в систему, он будет перенаправлен на страницу входа, что просто отлично.

НО: после успешного входа пользователь будет перенаправлен на / equips вместо / equip-planner.Я предполагаю, что это из-за действия формы ([...]action="{{ url('equips')}}[...]).

У кого-нибудь есть идеи, как изменить перенаправление, чтобы пользователь был отправлен обратно в / equip-planner?... это вообще возможно?Я думаю, что должен быть еще один шаг назад, так как шаги: / equip-planner -> / equips -> login -> вернуться на сайт раньше, что / equips?

РЕДАКТИРОВАТЬ:

Содержимое моего приложения / Http / Middleware / RedirectIfAuthenticated.php:

public function handle($request, Closure $next, $guard = null)
{
  if (Auth::guard($guard)->check()) {
    return redirect()->intended('/home');
  }
  return $next($request);
}

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

У меня есть решение:

моя форма:

{{  Form::open( array('route' => 'equip-planner', 'files'=>true,'method'=>'post') )  }}
{{ csrf_field() }}
  <input type="text" id="name" name="name" class="form-control-sm">
  <button type="submit" class="btn btn-primary btn-sm">
    <i class="fa fa-btn fa-plus">Create</i>
  </button>
{{ Form::close() }}

Затем я добавил новый маршрут:

Route::group(['middleware' => ['web']], function () {
  Route::group(['middleware' => ['auth']], function () {
    Route::post('/equip-planner', 'EquipmentController@store')->name('equip-planner');
  });
});

Это работает как задумано.

0 голосов
/ 21 ноября 2018

Используйте

return redirect()->back()

А если вы хотите отправить сообщение, используйте с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...