2016-05-27 5 views
0

Ich versuche, einige URL-Regeln in Yü auf 2, so kann ich eine Aktion von der Steuerung wie folgt zugreifen:urlManager Regeln arbeiten nicht auf Module Yii2

controller/action/1 -> controller/action (with a parameter) 

ich einige Regeln versucht, aber sie wird nicht funktionieren in meinen Modulen (www.example.com/midend, www.example.com/backend).

Also, wenn ich www.example.com/controller/action/1 zugreifen möchten funktioniert es ganz gut, aber wenn ich will www.example.com/midend/controller/action/1 es zurück zum Zugriff auf 404.

Dies sind die Regeln für die Module:

'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\w+>' => '<module>/<controller>/<action>', 
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>', 
'<module:\w+>/<controller:\w+>/<id:\w+>' => '<module>/<controller>', 

Dies sind die Regeln ohne Module:

'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
'<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
'<controller:\w+>/<id:\w+>' => '<controller>', 

ich habe bereits versucht <module:\w+> mit midend zu ersetzen.

+0

Warum '' und nicht '' '? – soju

+0

@soju gut, ich kopierte die aus der Aktion und ersetzt mit ID. Vermutung '\ d' hat mehr Sinn. –

Antwort

1

Angenommen, Ihre ids ganze Zahlen sind, sollten Sie einfach Ihre Regeln ersetzen durch diese:

'<controller>/<action>/<id:\d+>' => '<controller>/<action>', 

Es wird für Arbeit:

  • www.example.com/controller
  • www. example.com/controller/action
  • www.example.com/controller/action/1
  • www.beispiel.com/modul (a ssuming Sie einen Standard-Controller haben)
  • www.example.com/module/controller
  • www.example.com/module/controller/action
  • www.example.com/module/controller/action/1
+0

Danke. Ich erkannte, dass meine IDs auch Zeichen sind, also habe ich '\ d' durch' \ w' ersetzt. Perfekt gearbeitet. –

Verwandte Themen