如果我想制作一个控制器的'urlName',我该怎么办?
在网址中: http://examplate.com/theBook/someAction
我想要路由到名为'Book'而不是'Worker'的控制器, Url Manager可以完成任务吗?
答案 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
修改强>
然后在使用render
或renderPartial
时在控制器中指示视图所在的文件夹:
$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