2009-11-30 7 views
2

j'utilise Kohana v3 pour un projet web, et aujourd'hui, je me suis mis à écrire ceci:Kohana 3: en utilisant les voies maintenables

echo Html::anchor('user/view/'.$user->id, "See user's profile"); 

Si je renomme la méthode action_view dans le contrôleur de l'utilisateur, le lien sera cassé. Pour éviter cela, j'ai créé une fonction dans le modèle de l'utilisateur qui retourne l'URL utilisée pour visualiser le profil de l'utilisateur:

echo Html::anchor($user->url_view(), "See user's profile"); 

Il y a un autre (plus propre) façon de le faire (similaire à Django url() et {% url %})?

PS: Excusez mon anglais.

Répondre

7

Oui, vous voulez le routage inverse en utilisant le nom de la route. Essayez quelque chose comme ceci:

echo Html::anchor(
    Route::get('your_route_name')->uri(array('id'=>$user->id)), 
    "See user's profile" 
); 
+1

Merci beaucoup, je ne savais pas à propos du Classe de route. – dusan

0

Ce dont vous avez besoin s'appelle le routage inverse. vous avez un "nom" de route (avec éventuellement des paramètres) et vous l'associez à un couple module/action ou à un quelconque/chemin. Ensuite, vous utilisez ce nom de route à la place du contrôleur/chemin d'action direct, de sorte que vous pouvez changer le nom des actions comme vous le souhaitez dans le futur.

here's a page that describes this. sachez que dans kohana 2.x le routage inverse n'est pas supporté (donc quand il fait référence à 2.3, il signifie vraiment 3.x)

+2

Vous avez raison concernant le routage inversé, mais cet exemple lié est obsolète. Les meilleures ressources sont le guide d'utilisation officiel: http://v3.kohanaphp.com/guide/ et le wiki non officiel: http://kerkness.ca/wiki/doku.php – rick