嵌套控制器Yii中的URL结构

时间:2013-06-03 11:21:12

标签: php yii

我想知道在Yii中使用嵌套URL结构的最佳方法是什么 我的网站结构如下

/index
/dashboard (dashboard controller, index action)
/dashboard/profile (profile controller, index action)
/dashboard/profile/view (profile controller, view action)
/dashboard/profile/update (profile controller, update action)
/dashboard/stats (stats controller, index action)

依旧......

基本上/ dashboard有自己的控制器,默认情况下会使用Index操作 但我想在/仪表板下嵌套其他控制器,例如/仪表板/型材 但是,/ profile控制器不是一个动作,它应该是一个控制器,而控制器又可以拥有它自己的动作。例如/仪表板/型材/视图

这可行吗?如果是,那么实现这种结构的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

如果您已按照tutorial on the Yii site隐藏应用程序中的index.php:

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'caseSensitive' => false,
    'rules' => array(

        'dashboard/<controller:\w+>/<action:\w+>' => '/dashboard/<controller>/<action>',
        'dashboard/<controller:\w+>' => '/dashboard/<controller>/index',

        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        '<controller:\w+>/' => '<controller>/index',

        ...

答案 1 :(得分:1)

还有一种方法可能没有被提及。昨天我会回答“使用模块”,但今天我学会(并测试)它足以将子文件夹添加到文件夹“controllers”和“views”。例如文件夹:“/ controllers / dashboard”,文件“ProfileController.php”将启用URL:“myproject.com/dashboard/profile/action”,视图将在文件夹“views / dashboard”中搜索。

但是有一个问题,你不能使用URL:“myproject.com/dashboard/”作为“仪表板”只是一个文件夹名称。所以你可能不得不使用模块。

YouTube::Kurt Clement - Yii - UrlManager