Yii框架:使用Url Manager“重命名”控制器?

时间:2014-08-05 11:27:44

标签: yii

如果我想制作一个控制器的'urlName',我该怎么办?

在网址中: http://examplate.com/theBook/someAction

我想要路由到名为'Book'而不是'Worker'的控制器, Url Manager可以完成任务吗?

3 个答案:

答案 0 :(得分:0)

是的,这是可能的。只需指定您的网址路径:

return array(
    'urlManager' => array(
        'urlFormat' => 'path',
        'rules' => array(
            'Book/<action:\w+>' => 'theBook/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

);

答案 1 :(得分:0)

Ragingprodigy是对的,但您也可以使用controllerMap选项

  

从控制器ID到控制器配置的映射。每个名称 - 值对指定单个控制器的配置。控制器配置可以是字符串或数组。如果是前者,则字符串应该是控制器的类名或类路径别名。如果是后者,则数组必须包含一个'class'元素,该元素指定控制器的类名或类路径别名。数组中的其余名称 - 值对用于初始化相应的控制器属性。

例如,在配置文件中定义

'controllerMap'=>array(
    'Book'=>array(
       'class'=>'path.to.TheBook',
    ),
)

然后http://examplate.com/Book/someAction将调用actionSomeAction控制器

中的方法TheBook

修改

然后在使用renderrenderPartial时在控制器中指示视图所在的文件夹:

$this->render("//thebook/yourView");

答案 2 :(得分:0)

阅读文档https://www.yiiframework.com/doc/guide/2.0/en/structure-controllers#controller-ids,看起来yii使用-来分隔控制器名称中的CamelCase单词。

因此,将book/<action:\w+>路由到控制器TheBookController的正确方法是:

return array(
    'urlManager' => array(
        'urlFormat' => 'path',
        'rules' => array(
            'book/<action:\w+>' => 'the-book/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),

);

相同的规则适用于CamelCase操作名称 ,请参阅Yii2 routing when using CamelCase action names