【发布时间】:2014-12-22 20:19:35
【问题描述】:
我正在尝试为 yii 框架编写自定义扩展,但我无法访问存储在 extensions/controllers 文件夹中的控制器。我进行了很多搜索,但没有找到任何提示。 这是结构
protected
-- extensions
-- XYZ (Extension's name)
-- assets
-- controllers
-- XYZController.php
-- models
-- XYZModel.php
-- widgets
-- views
-- form.php
-- XYZWidget.php
我已经完成了加载扩展所需的所有调整,目前我可以使用 $this->renderInternal('views/form.php') 从视图文件夹中显示表单。这样扩展就加载成功了。 当我尝试访问扩展文件夹中的控制器时出现问题。
通常当需要访问 protected/controllers/SiteController.php 中的索引方法时,URL 是 http://project.com/index.php/site/index" 因此,我应该在表单操作中写什么才能访问 /extensions/controllers/ 中的任何方法来自表单的 XYZController.php。
我在 main.php 中添加了这段代码,就像在各种建议中写的一样
'controllerMap'=>array(
'XYZ'=>array(
'class'=> 'XYZ.controllers.XYZController',
),
),
config/main.php 文件
Yii::setPathOfAlias('XYZPath', realpath('protected') . '/extensions/AQ');
return array(
-------
-------
'preload'=>array('log', 'XYZ'),
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.XYZ.controllers.*',
'application.extensions.XYZ.models.*',
'application.extensions.XYZ.widgets.*',
),
'controllerMap'=>array(
'XYZ'=>array(
//'class'=> 'XYZPath.controllers.XYZController',
'class'=> 'extensions/XYZ/controllers/XYZController',
),
),
-------------
-------------
)
请在这种情况下给我任何提示。 提前致谢。
【问题讨论】:
-
您正在编写应用程序组件 (yiiframework.com/doc/guide/1.1/en/…) 或模块 (yiiframework.com/doc/guide/1.1/en/extension.create#module)?如果两者都不是,只需在您的配置文件中导入
extensions.XYZ.controllers.*。 -
我已经这样做了 'application.extensions.XYZ.*' ,所以应该包括 XYZ 文件夹中的所有内容。
-
Yii 不会递归地从子文件夹导入类,所以你应该使用完整的文件夹别名包含来自
controllers的类。 -
@AlexAkr 实际上我尝试以您编写的方式导入类,但仍然没有结果......
-
@stratovarius 显示你的
protected/config/main.php
标签: php yii yii-extensions yii-routing yii-widgets