• Laravel 5.2 редирект на предыдущую страницу с сохранением get параметров?

    greabock
    @greabock
    Могу
    Например, в Laravel есть механизм intended. Можно посмотреть как он устроен, и сделать нечто подобное.
    Нас конечно же больше всего интересуют методы guest и intended класса Illuminate\Routing\Redirector.

    /**
         * Create a new redirect response, while putting the current URL in the session.
         *
         * @param  string  $path
         * @param  int     $status
         * @param  array   $headers
         * @param  bool    $secure
         * @return \Illuminate\Http\RedirectResponse
         */
        public function guest($path, $status = 302, $headers = [], $secure = null)
        {
            $this->session->put('url.intended', $this->generator->full());
    
            return $this->to($path, $status, $headers, $secure);
        }
    
       /**
         * Create a new redirect response to the previously intended location.
         *
         * @param  string  $default
         * @param  int     $status
         * @param  array   $headers
         * @param  bool    $secure
         * @return \Illuminate\Http\RedirectResponse
         */
        public function intended($default = '/', $status = 302, $headers = [], $secure = null)
        {
            $path = $this->session->pull('url.intended', $default);
    
            return $this->to($path, $status, $headers, $secure);
        }


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

    Реализуйте схожий механизм со своими нюансами и будет вам счастье.

    Вообще (если ваша задача описана в вашем вопросе в полной мере) будет вполне достаточно сделать так:
    if(auth()->guest()) {
        session()->put('url.intended', url()->full());
    
        return redirect()->route('auth');
    }
    Ответ написан
    3 комментария