2014-12-05 4 views
11

für ein aktuelles (Fortgeschrittene) yii2-basierte Projekt config Ich brauche nur einen Controller (SiteController). Es ist also nicht notwendig, es in der URL anzuzeigen. Das ist, warum ich diese Regel zum Frontend Config hinzugefügt:

'urlManager' => [ 
    'rules' => array(
     '<alias:product|contact|about>' => 'site/<alias>', 
    ), 

Dies funktioniert gut und localhost/Produkt Punkte auf localhost/site/Produkt.

Natürlich aktiviert i prettyUrl und hinzugefügt, um diese Standardregeln auf die gemeinsame config:

'rules' => array(
       '<controller:\w+>/<id:\w+>' => '<controller>', 
       '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
      ), 

Jetzt will ich wie folgt ein GET-Parameter zuzugreifen: localhost/Produkt/Produktname. Aber ich habe den Fehler:

Unable to resolve the request "product"

aber localhost/site/Produkt/Produktnamen ordnungsgemäß funktioniert ... Der "Produktname" sollte $ _GET [ 'id'] sein. Was muss ich ändern, damit dies geschieht?

Danke!

Antwort

11

Ihre Regeln vor den Standard diejenigen sein sollten, und Sie müssen zwei Regeln, z.B. :

'rules' => array(
    '<alias:contact|about>' => 'site/<alias>', 
    '<alias:product>/<id:\w+>' => 'site/<alias>', 
    '<controller:\w+>/<id:\w+>' => '<controller>', 
    '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', 
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
), 
+0

Hier ist, was ist w +? –

+1

@YasarArafath ** '\ W 'paßt zu jedem Wortzeichen (gleich [a-zA-Z0-9 _]) ** –

-1

Gerade definieren var in Ihrer Aktion, zum Beispiel public function actionProduct($id) und $id gewesen ist $_GET['id']

+0

ich tat, Fehler ist immer noch da. – ESCOBAR