web-dev-qa-db-fra.com

Nom de l'itinéraire précédent dans Laravel 5.1-5.6

J'essaie de trouver le nom de l'itinéraire précédent dans Laravel 5.1 . Avec:

{!! URL::previous() !!}

Je reçois l'URL de la route, mais j'essaie d'obtenir le nom de la route comme pour la page actuelle:

{!! Route::current()->getName() !!}

Mon client ne souhaite pas un texte différent pour Merci page , dépend de la page ( Enregistrer page ou Page de contact ) utilisateur aller à Merci page . J'essaye avec:

{!! Route::previous()->getName() !!}

Mais ça n'a pas marché. J'essaie d'obtenir quelque chose comme:

@if(previous-route == 'contact')
  some text
@else
  other text
@endif
7
Akul Von Itram

Voici ce qui fonctionne pour moi. Je trouve cette réponse et cette question et le modifie pour fonctionner dans mon cas: https://stackoverflow.com/a/36476224/2807381

@if(app('router')->getRoutes()->match(app('request')->create(URL::previous()))->getName() == 'public.contact')
    Some text
@endif
17
Akul Von Itram

Vous ne pouvez pas obtenir le nom de la route de la page précédente, vos options sont les suivantes:

  1. Vérifiez l'URL précédente au lieu d'un nom de route.

  2. Utilisez sessions . Tout d’abord, enregistrez le nom de la route:

    session()->flash('previous-route', Route::current()->getName());
    

Puis vérifiez si la session a previous-route:

@if (session()->has(`previous-route`) && session(`previous-route`) == 'contacts')
    Display something
@endif
  1. Utilisez les paramètres GET pour transmettre le nom de la route.

Si j'étais vous, j'utiliserais des sessions ou vérifierais l'URL précédente.

4
Alexey Mezenin

J'ai créé une fonction d'assistance comme celle-ci.

/**
 * Return whether previous route name is equal to a given route name.
 *
 * @param string $routeName
 * @return boolean
 */
function is_previous_route(string $routeName) : bool
{
    $previousRequest = app('request')->create(URL::previous());

    try {
        $previousRouteName = app('router')->getRoutes()->match($previousRequest)->getName();
    } catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $exception) {
        // Exception is thrown if no mathing route found.
        // This will happen for example when comming from outside of this app.
        return false;
    }

    return $previousRouteName === $routeName;
}
0
Ryuta Hamasaki