Salut à tous.

Je rencontre une petite difficulté que je n'arrive pas à passer, j'ai recherché à droite et à gauche sans succés.

Dans mon projet je voulais garder une Url de base et au fur et a mesure avoir la base de cette url qui s'agremente

Pour le moment j'ai

niveau 0 : projet/ -> Index
Route::get('/', 'indexController@index');

niveau 2 : projet/competition/compet1 -> tous les events de la compet 1
Route::get('/competition/{slug}',['as' => 'competition', 'uses' => 'MatchController@listeMatchLigue']);

niveau 3 : projet/rencontre1/id -> Detail de la rencontre.
Route::get('/match/{slug}/{id}', ['as' => 'match', 'uses' => 'MatchController@detailMatch']);

Ce que j'aimerais faire :
niveau 0 : projet/ -> Index
Route::get('/', 'indexController@index');

niveau 1 : projet/competition -> liste des compéts
Route::get('/competition/', ['as' => 'competition', 'uses' => 'MatchController@listeLigue']);

niveau 2 : projet/competition/compet1 -> tous les events de la compet 1
Route::get('/competition/{slugCompetition}',['as' => 'listeMatch', 'uses' => 'MatchController@listeMatchLigue']);

niveau 3 : projet/competiton/compet1/rencontre1/ -> Detail de la rencontre.
Route::get('/competition/{slugCompetition}/{slugRencontre}',['as' => 'match', 'uses' => 'MatchController@detailMatch']);

Le problème étant que lorsque j'essai de faire une route ayant une racine commune à une autre route, j'ai une erreur Exception Http.

Comment faire pour contruire ce type de route ?

En vous remerciant.

7 réponses


Bonjour,

je ne sais pas si tu as deja fait une recherche en Anglais, tu pourras surement trouver plus d'informations en recherchant

laravel breadcrumb

"breadcrumb" etant justement ce "fil d'Ariane"

Il y a ce depot github qui est assez bien recommande mais plus maintenu.

Laravel Breadcrumbs

Salut Flaith.

Merci pour ces informations, ca semble bien fastidieux cette histoire de dépot. J'aurai pensé que Laravel géré ca en narif, surtout avec cette gestion de route qui semble assez poussé ! Comment font les sites internet un peu costaud qui utilise laravel ou autre Symphony ?

Salut Yoann,

Laravel gere bien ca, grace a composer, cela sera automatise, tu as les infos pour ce depot ici Laravel Breadcrumbs 3

Pour l'installation, il te suffit juste de lancer:

composer require davejamesmiller/laravel-breadcrumbs

Comme indique dans la doc, cela va mettre a jour ton composer.json et installer ce paquet dans le repertoire vendor

Peut-etre qu'une version prochaine de Laravel gerera cela en natif, qui sait... ;)

Bonjour,

Sinon tu as https://laravel.com/docs/5.4/routing#route-groups les groupes de routes qui peut t'aider à faire ce que tu veux

Le package Laravel Breadcrumb n'a aucun rapport avec la demande initial.

Normalement tu ne devrais pas avoir de problème pour ce que tu souhaites faire. Le seul problème qui peut survenir c'est avoir deux routes ainsi :

Route::get('/competition/{slugCompetition}',['as' => 'listeMatch', 'uses' => 'MatchController@listeMatchLigue']);
Route::get('/competition/a-venir',['as' => 'listeAVenir', 'uses' => 'MatchController@listeMatchAVenir']);

Dans le cas ci-dessus, si tu souhaites accéder à projet/competition/a-venir, tu iras toujours dans la première route parce qu'elle match avec la première. La solution pour remédier à ce problème est de passer la seconde route en première position.

Route::get('/competition/a-venir',['as' => 'listeAVenir', 'uses' => 'MatchController@listeMatchAVenir']);
Route::get('/competition/{slugCompetition}',['as' => 'listeMatch', 'uses' => 'MatchController@listeMatchLigue']);

salut. merci pour cette info qui ce veux rassurante. je test et je retournerais le resultat. merci