如何使用位于文件夹中的Yii控制器,而不是默认的“protected/controller”



在Yii中,当访问<app-host>/index.php?r=<mycontroller>/<myaction>时,框架将开始运行protected/controller/<MyController>Controller.php中的代码

我想要的代码位于另一个文件夹,说protected/anotherFolder,而其他控制器保持原样。怎么做呢?

打开<app-host>/index.php,编辑为

//...
require_once($yii);
$app = Yii::createWebApplication($config);
$app->setControllerPath('protected/anotherFolder');
$app->run();

感谢yii论坛上的mdomba,我使用CWebApplication::controllerMap找到了答案-在我们称之为

的应用程序的加载状态下
Yii::app()->controllerMap['yourControllerName']='path.alias.to.your.controller.file.without.dotPHP';

可以使用controllerMap - http://www.yiiframew...ollerMap-detail

如果我明白你的意思,你想把web逻辑分成不同的"文件夹",或者(以一种更简单的方式)模块。例如,要将所有管理文件放到另一个地方,可以使用r=admin/users,例如

如果您已经激活了gii管理器,请转到/index.php?R =gii,并创建一个模块。就是这样。然后,您可以在protected/modules/<module-name>/controllers/中创建控制器,并使用该路径调用它们。当然,视图也存储在

可以添加到配置文件

'controllerPath' => 'your_new_controller_path',

与view path

相同
'viewPath' => 'path_to_template_folder',

最新更新