/ / Laravel - Przekierowanie :: zamierzona trasa nie działa - laravel, trasy

Laravel - Przekierowanie :: zamierzona trasa nie działa - laravel, trasy

Mam wbudowany blog w serwisie Laravel i komentowanie posta (jeśli wylogujesz się) musisz się zalogować. Umieszczę taki link:

<a href="{{ URL::route("login") }}">login</a> to do this.

To przekierowuje do formularza logowania, który raz wypełniony i użytkownik jest uwierzytelniony, mam to:

return Redirect::intended("/");

Który przenosi użytkownika na stronę główną, nie strona, na której zamierzali się znaleźć, w tym przypadku strona z postem, który kliknęli login link z, aby móc komentować. Jak mogę w takim przypadku zwrócić je z powrotem do zamierzonego adresu URL?

Odpowiedzi:

4 dla odpowiedzi № 1

Tak właściwie, Redirect::intended("/") działa, jeśli w sesji jest dostępny klucz jako url.intended w przeciwnym razie przekierowuje do domyślnego URL który jest w twoim przypadku "/", więc na pewno nie umieściłeś URL w sesji. Aby to osiągnąć, możesz umieścić URL w sesji używając czegoś takiego:

Session::put("url.intended", "url...");

Tak więc prawdopodobnie w linku do logowania możesz dodać ciąg zapytania w następujący sposób:

<a href="{{ URL::route("login") }}?intended=1">login</a>

Możesz więc śledzić przekierowanie i metodę tej trasy (przed powrotem) View) po prostu umieść poprzedni URL w sesji, używając czegoś takiego:

if(Input::get("intended")) {
Session::put("url.intended", URL::previous());
}

Następnie zanim przekierujesz się z tego miejsca, usuń URL z sesji używając czegoś takiego:

$intendedUrl = Session::get("url.intended", url("/"));
Session::forget("url.intended");
return Redirect::to($intendedUrl);

To powinno rozwiązać problem. Możesz również sprawdzić ta odpowiedź, może być pomocne.


2 dla odpowiedzi nr 2

Redirect::intended wymaga dwóch części do pracy. Pierwsza to sytuacja, w której użytkownik próbuje uzyskać dostęp do zastrzeżonej strony /orders ale nie jesteś zalogowany, przekierowujesz ich na stronę logowania przez:

redirect()->guest("/login");

Następnie w odpowiedzi na żądanie logowania, jeśli uwierzytelnienie się powiedzie, zadzwonisz:

redirect()->intended("/dashboard");