1

我想知道在 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 操作但是我想在 /dashboard 下嵌套其他控制器,例如 /dashboard/profile 但是,/profile 控制器不是一个操作,它应该是一个控制器转身可以有自己的行动。例如 /dashboard/profile/view

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

4

2 回答 2

3

如果您按照Yii 网站上的教程从应用程序中隐藏 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',

        ...
于 2013-06-03T14:05:54.493 回答
2

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

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

YouTube::Kurt Clement - Yii - UrlManager

于 2014-07-06T15:06:47.347 回答