Yii - 子目录中的控制器

use*_*251 8 yii

我正面临着Yii Framework路由的问题.

我已经创建了控制器,我们称之为TestController.php

然后,我需要把它放到一个名为Make的子目录中,所以我的结构看起来像:

controllers/TestController.php
controllers/Make/TestController.php
Run Code Online (Sandbox Code Playgroud)

对于ocurse,如果我更改它的名称,它可以很好地工作,但有没有办法在控制器目录和子目录中放置一个相同名称的控制器?

编辑
我的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>',
            ),
        ),
Run Code Online (Sandbox Code Playgroud)

我有一个控制器Bookmarks.由于我还有一些与书签相关的其他内容,我需要创建一个目录bookmarks并在其中放置一些控制器Categories.

不能强迫它发挥作用.

编辑2
刚检查清洁应用程序.它似乎是一个Yii bug(?).

编辑3
我已根据建议更改了导入配置:

'import'=>array(
        'application.models.*',
        'application.components.*',
        'application.controllers.bookmarks.*'
    ),
Run Code Online (Sandbox Code Playgroud)

我还创建了正确的路线规则'bookmarks/<controller:\w+>/<action:\w+>'=>'bookmarks/<controller>/<action>',.

我的文件结构现在如下:

BookmarksController.php
bookmarks/CategoriesController.php
Run Code Online (Sandbox Code Playgroud)

这是一个被抛出的异常:

异常'CHttpException',消息'系统无法找到请求的操作"类别".在/home/root/www/yiitesting/framework/web/CController.php:477

hda*_*ang 5

在创建任何子目录之前,请注意 Yii 自动加载函数不会搜索子目录:在 Controller 的情况下,Yii 想要自动加载 TestController 类,因此在导入声明中添加 application.controllers.Make.* :

'import'=>array(
     .....
     'application.controllers.Make.*',
 ),
Run Code Online (Sandbox Code Playgroud)

当然,您必须向 urlManager 添加规则,以帮助 Yii 像 @ldg 那样查找正确的控制器。

注意:在这种情况下,Yii 将为视图查找 views/Make/*。