Liaison Route-Controleur sous Laravel 4

Notre premier devoir sous Laravel 4, c’est de crĂ©er nos routes, et oui sans routes pas de site 🙂
Les routes sont dans un seul fichier app/routes.php mais rien ne nous empêche de le scinder en 2 par exemple routes.php pour le back-office et routes.front.php(ou admin) pour le front-office; ça peut éviter de mélanger les torchons avec les serviettes.


Il est possible de créer des routes avec les méthodes
Route::get( url, controleur@action) et Route::post( url, controleur@action) ou, « action » est la mĂ©thode appelĂ©e du contrĂ´leur. C’est clairement la mĂ©thode la plus directe mais aussi la moins souple donc a utiliser le moins possible si vous ne voulez pas d’un fichier routes.php rapidement illisible donc ingĂ©rable.


le controleur  RESTful

Il est aussi possible de déclarer une route non plus sur une action mais directement sur un contrôleur :
Route:controller( url, [namespace\]Controleur );
ici, nous donnons tout un panel d’url Ă  un seul contrĂ´leur; par exemple :

Route::controller('/produits', 'ProduitsController')

peut se traduire par :

Route::get( '/produits' , 'produitsController@getIndex' )
Route::get( '/produits/action' , 'produitsController@getAction' )
Route::get( '/produits/action/{id}' , 'produitsController@getAction(id)' )
Route::get( '/produits/action/{id}/4/toto/77' , 'produitsController@getAction(id)' )
Route::post( '/produits/action' , 'produitsController@postAction' )/* désolé trop de solutions ... */

Il faut donc retenir que le premier « dossier » après l’url reprĂ©sente l’action (la mĂ©thode) qui sera appelĂ©e dans le contrĂ´leur. Cette mĂ©thode dĂ©butera par « get » ou « post ». Il nous suffit donc d’Ă©crire une mĂ©thode pour rĂ©pondre a une action spĂ©cifique ( getVoir, postAjouter, getPrevisualiser, getEditer,…)

Si la mĂ©thode recherchĂ©e n’est pas trouvĂ©e, Laravel renvoie une erreur 404. ce qui est normal si je tape : /produits/QuiEstLePlusFort?
Mais il est possible d’ajouter une mĂ©thode a notre contrĂ´leur :

public function missingMethod($parameters)
{
    // je repond a tout meme a : quiestleplusfort !
}

missingMethod() sera appelĂ©e automatiquement si aucune mĂ©thode (get..post) n’est trouvĂ©e.


Le contrôleur de ressource

Il existe un type particulier de Controleur : le controleur de ressource, mais en fait ce n’est qu’un contrĂ´leur restfull avec juste des routes prĂ©dĂ©finies.

Ce contrôleur a 7 actions(routes) prédéfinies : index, create,store,show,edit,update,destroy
Allez voir la documentation pour plus de dĂ©tail mais c’est un contrĂ´leur particulier, qui en fait rĂ©pond juste a une normalisation, on aime ou pas…


Le blog de bestMomo nous parle aussi des Routes et des Contrôleurs .

 

Share Button

Vous devriez aimer...