2016-06-15 15 views
2

ich ein Modul mit dem Namen Katalog mit, für den Moment, zwei Aktionen in der Standard-Controller erstellt haben:Yii2 url Manager analysieren nicht Urls mit get Parameter

  1. actionIndex
  2. actionLineProducts

in der Indexansicht ich einige Links haben, die das Line-Produkt Aktion ausgeführt, war die uRL das Ergebnis:

Url::to(['line-products', 'line' => $line->name]) 

mein Ziel ist es, einen Link wie

Katalog/{line-name}

wo Line-Name ist der Parameter sende ich zum Handeln LineProducts zu erhalten. Meine urlManager Konfigurationen sind:

'enablePrettyUrl' => true, 
'showScriptName' => false, 
'rules' => [ 
     '<moduls:catalogue>/<controller:default>/<action:line-products>/<line:*>' => '<module>/<line>', 
     '<controller:\w+>/<id:\d+>' => '<controller>/view/', 
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
     '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
], 

.htaccess Konfigurationen:

RewriteEngine on 
# If a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Otherwise forward it to index.php 
RewriteRule . index.php 

Kann mir jemand erklären, warum meine URL immer mag, ist:

http://my-site.dev/catalogue/default/line-products?line= {line-name}

Antwort

0

Sie haben die Konfiguration getauscht. Der Schlüssel ist das Muster der URL, die vom Browser übergeben wurde. Der Wert ist die Route.

'rules' => [ 
    'catalogue/<line>' => 'catalogue/default/line-products' 
    ... 
] 

Sie können die Routing and Url Creation page im Yii2 Führer lesen, um weitere Informationen: Da Sie ein bestimmtes Modul, Controller und die Aktion verwenden, können Sie die in direkt übergeben.

+0

Danke für die Antwort! Ich setze die Regel auf meine UrlManager-Konfiguration, aber dies eine Ausnahme: preg_match(): Compilierung fehlgeschlagen: nichts zu wiederholen bei Offset 25 – MarBer

+1

Hmm. Ich habe die Antwort aktualisiert. Probieren Sie das stattdessen. – topher