Vous pouvez également le faire avec des règles de réécriture. Une règle comme ceci dans votre fichier de configuration:
'controller/<slug:[\w\-]+>'=>'controller/view',
prendra une URL comme ceci:
controller/my-slug
et il redirigera sur le ActionView() dans votre contrôleur, et passer la limace ("mon -slug ") en tant que variable $ _GET. Avec cette règle de réécriture vous appelez maintenant $ _GET ['slug'] et il retournera "my-slug" de l'url. J'ai une ligne "slug" comme clé primaire, alors je demande juste la DB pour $ _GET ['slug'] dans mon actionView() et j'obtiens l'enregistrement correct basé sur l'URL. Fonctionne comme un charme. Bonne chance! Pour supprimer le préfixe du contrôleur en plus de l'utilisation d'un slug, vous aurez probablement besoin d'une grande table pour garder une trace de tous les slugs (pour éviter les doublons). Si vous avez cela, alors vous pouvez faire plusieurs choses différentes:
1 Remplacez onBeginRequest pour faire une recherche sur la table des limes principales pour savoir quel contrôleur appeler. 2. Utilisez une réécriture principale pour un seul ActionIndex dans SiteController et, dans cette action, recherchez le slug dans la table principale pour savoir vers quel contrôleur/action envoyer l'utilisateur. La règle de réécriture ressemblerait à quelque chose comme ceci:
'<slug:[\w\-]+>'=>'site/index',
Merci, mais peut-être que je n'ai pas expliqué ce que je veux dire très bien. ce que je voulais dire est dans quora.com vous verrez toute la page y compris (sujet, question et nom d'utilisateur) a slug après le domaine et il n'y a aucun paramètre en face du slug pour appeler le contrôleur et des exemples d'action pour le sujet http: // www.quora.com/StackOverflow et pour la question http: //www.quora.com/Pourquoi-ne-Quora-implémenter-un-système-de-réputation-a-la-StackOverflow alors comment se passe la requête? – tayler