Laravel 5

Service Provider : Get route by name

Avatar de loicconan
loicconan

Bonjour, Dans un Service Provider (que ce soit dans le register ou le boot) j'essaye de faire un

$var = Route::getRoutes()->getByName('MA_ROUTE');

Cela me retour NULL. Pourtant Route::getRoutes() me retourne bien la liste de mes routes avec celle souhaitée dedans.

Si je fais la même chose dans un contrôlleur pas de soucis. J'ai essayé en Facade mais aussi en injection de dépendance, même résultat.

Avez-vous une idée ?

Laravel 5.8.

Merci.

Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Salut,

getByName est une méthode de la collection des routes, ça peut pas marcher en l'appliquant au tableau retourné par getRoutes.

$var = Route::getByName('MA_ROUTE');
Posté il y a 5 mois
Avatar de loicconan
loicconan

Merci de ta réponse. Malheureusement cette méthode n'existe pas à partir de la Facade Route :

InvalidArgumentException
Attribute [getByName] does not exist.
Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Ah oui...

J'ai fait un essai et j'ai vu qu'au niveau d'un provider les noms des routes ne sont pas encore renseignées dans le routeur, donc il faut le raffraichir, du coup le code devrait convenir comme ça :

$routes = $this->app->routes;
$routes->refreshNameLookups();
$maRoute = $routes->getByName('MA_ROUTE');

Le provider doit être à la fin de la pile et le code dans le boot.

Posté il y a 5 mois

Vous ne pouvez pas répondre à ce sujet.