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

时间:2011-11-02 07:26:38

标签: controller yii file-location

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

我想将该代码放在另一个文件夹中,protected/anotherFolder说,而其他控制器保持原样。怎么做?

此致

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

感谢post在yii论坛上的mdomba,我找到了使用CWebApplication::controllerMap的答案 - 在我们调用的应用程序的加载状态下

Yii::app()->controllerMap['yourControllerName']='path.alias.to.your.controller.file.without.dotPHP';
  

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

答案 2 :(得分:3)

如果我找到了您,您希望将Web逻辑拆分为不同的“文件夹”,或者(以更直接的方式)模块。例如,要将所有管理内容放到另一个地方并使用r = admin / users进行此操作,例如

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

答案 3 :(得分:3)

您可以添加到配置文件

'controllerPath' => 'your_new_controller_path',

与视图路径相同

'viewPath' => 'path_to_template_folder',