URL personnalisée règles avec des modules en Yii2
J'ai été en regardant autour de lui, mais n'ai pas trouvé ce dont j'avais besoin. En gros, j'ai quelques petits modules qui ont juste le DefaultController et un peu plus gros avec plusieurs contrôleurs.
Mes règles pour les petits modules du bon travail, mais ceux de la grande modules ne pas. Voici mes règles:
'<module:\w+>/<action:\w+>' => '<module>/default/<action>',
'<module:\w+>/<action:\w+>/<id:\d+>' => '<module>/default/<action>',
'<module:\w+>/<controller:\w+>' => '<module>/<controller>/index',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>'
Les deux premières règles, beau travail, ce qui me permet d'accéder à:
http://host/news/create
et les routes news/default/create
.
Les deux derniers sont censés faire le suivant:
http://host/posts/category
qui devrait acheminer à posts/category/index
et
http://host/posts/category/create
qui devrait acheminer à posts/category/create
Ils ne semblent pas fonctionner, malheureusement. Des suggestions?
OriginalL'auteur Roel | 2014-12-10
Vous devez vous connecter pour publier un commentaire.
Il ressemble à la première règle de la capture à toute demande qui pourrait également correspondre à la troisième.
Penser dans les termes de son représentant regex:
w+/w+
: en règle général pour les routes dans Yii, plus de règles normatives devraient aller sur le dessus et moins plus générique, fourre-tout, les règles doivent être à la base.Maintenant la meilleure façon d'obtenir ce dont vous avez besoin serait de faire quelque chose le long des lignes de:
de cette façon, vous sont explicitement exprimant les routes pour chacun des modules dans un langage clair et immédiat qui sera également vous aider dans le long terme.
Idéalement oui, mais cela dépend vraiment sur une base de cas par cas. Dans cette situation, les deux premiers "par défaut" peut-être la règle pour tous les modules, mais que vous devez vous assurer que tous les modules ont une structure générique et permettrait de répondre à cette question correctement. Deuxièmement, c'est une architecture problème plutôt qu'autre chose: en faisant deux règles qui répondent à
w+/w+
vous êtes en train de créer un conflit d'itinéraires, où la première priorité, d'où la nécessité de se différencier. Vous pouvez regrouper plusieurs modules dans une même règle de la manière suivante:<module:(posts|otherModule)>/<controller:\w+>
.OriginalL'auteur Mr Peach