【发布时间】:2011-07-10 11:13:14
【问题描述】:
我遇到了 Yii 框架路由的问题。
我已经创建了控制器,我们称之为TestController.php
然后,我需要将它放到一个名为 Make 的子目录中,所以我的结构如下所示:
controllers/TestController.php
controllers/Make/TestController.php
当然,如果我更改它的名称,它可以正常工作,但是有没有办法将同名的控制器放在控制器目录和子目录中?
编辑
我的 URLManager 配置如下所示:
'urlManager'=>array(
'showScriptName' => false,
'urlFormat'=>'path',
'rules'=>array(
'gii' => 'gii',
'gii/<controller:\w+>' => 'gii/<controller>',
'gii/<controller:\w+>/<action:\w+>' => 'gii/<controller>/<action>',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
我有一个控制器Bookmarks。由于我还有一些与书签相关的其他内容,因此我需要创建一个目录 bookmarks 并在其中放置一些控制器,例如 Categories。
无法强制使其工作。
编辑 2
刚刚检查了干净的应用程序。这似乎是一个 Yii 错误(?)。
编辑 3
我已经按照建议更改了导入配置:
'import'=>array(
'application.models.*',
'application.components.*',
'application.controllers.bookmarks.*'
),
我还创建了正确的路由规则'bookmarks/<controller:\w+>/<action:\w+>'=>'bookmarks/<controller>/<action>',。
我的文件结构现在如下:
BookmarksController.php
bookmarks/CategoriesController.php
这是一个被抛出的异常:
异常 'CHttpException' 带有消息'系统无法找到 请求的操作“类别”。在 /home/root/www/yiitesting/framework/web/CController.php:477
【问题讨论】:
-
我在官方 YIi 支持论坛上问了一个问题。这是链接:yiiframework.com/forum/index.php?/topic/…。我也试图重现这个问题(如论坛上发布的那样)并面临同样的问题。似乎使用 Yii 做这样的功能是不可能的——这对我来说真的很奇怪——我无法保证它是正确的答案,因为我几天前才开始使用 Yii(这没问题,但基本上没有足够的经验来使用这个框架提供有用的答案)。
-
您要访问哪个网址以获取“bookmarks/CategoriesController.php”?如果您转到书签/类别,它应该在 CategoriesController 中查找 actionIndex。确保首先放置“书签”ULR 规则。它应该与 Gii 的路由基本相同,所以如果这对你有用,那么它也应该如此。
标签: yii