2016-04-27 59 views
9

Gdy użytkownik uzyskuje dostęp do domain/page, muszę skierować je do controller/action/100. Nie chcę przekazywać żadnego parametru za pośrednictwem adresu URL, ale chcę dodać go do reguł adresu URL.routing yii2 - przekazanie parametru do trasy w regułach

Dodałem poniższy kod do mojego pliku konfiguracyjnego.

'urlManager' => [ 
    'rules' => [ 
     'login' => 'site/login', // working 
     'about' => 'cms/page/10' // Not Working 
     'about' => 'cms/page?id=10' // Not Working 
    ], 
], 

Pierwsza zasada działa poprawnie.

Czy mogę przekazać parametr trasy w regułach url?

Odpowiedz

7

Trzeba użyć defaults i zadeklarować regułę wyraźnie:

'urlManager' => [    
    'rules' => [ 
     'login' => 'site/login', 
     [ 
      'pattern' => 'about', 
      'route' => 'cms/page', 
      'defaults' => ['id' => 10], 
     ] 
    ], 
], 

Dodaj 'mode' => \yii\web\UrlRule::PARSING_ONLY do tej reguły, jeżeli chcesz, aby zapobiec transformacji podczas tworzenia URL z urlManager (np Url::to() używa urlManager i jego zasady i działa w odwrotnym kierunku, to jest Url::to(['cms/page', 'id' => 10]) wygeneruje łącze about)

Należy również rozważyć skonfigurowanie przekierowania na serwerze WWW.

+0

dziękuję Robsch, że działa – suneeth