我想知道在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控制器不是一个动作,它应该是一个控制器,而控制器又可以拥有它自己的动作。例如/仪表板/型材/视图
这可行吗?如果是,那么实现这种结构的最佳方式是什么?
答案 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/”作为“仪表板”只是一个文件夹名称。所以你可能不得不使用模块。