2015-05-21 3 views
3

Исходя из фона Laravel и Rails, я нахожу довольно трудным выяснить, как работают правила Yii2.Правила маршрутизации URL-адресов в Yii2

Я ищу следующие шаблоны URL:

  • /статьи/
  • /статьи/просмотр/
  • /статьи/1/мой некрасиво-статья

ArticlesController является определенные как:

<?php 

namespace app\controllers; 

class ArticlesController extends \yii\web\Controller 
{ 
    public function actionIndex() 
    { 
     return $this->render('index'); 
    } 
    public function actionView() 
    { 
     return $this->render('index'); 
    } 

} 

До сих пор я пробовал:

'urlManager' => [ 
      'showScriptName' => false, 
      'enablePrettyUrl' => true, 
      'rules' => 
       [ 
        'articles/view' => 'article/view' 
       ], 
     ], 

Мне больше всего интересно перенаправить мой шаблон на метод контроллера @.

ответ

6

Можно использовать <id> параметров:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
     '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     '<controller:\w+>/<id:\d+>/<slug:\w+>' => '<controller>/view', 
    ], 
], 

И контроллер статьи:

<?php 

namespace app\controllers; 

class ArticlesController extends \yii\web\Controller 
{ 
    public function actionView() 
    { 
     $id = (int) Yii::$app->request->get('id'); 

     return $this->render('index'); 
    } 
}