Zend建议将 mvc 中的控制器动作助手放入/application/controllers/helpers
. 这是使用这些的正确方法吗?
我必须在 bootstrap/application.ini 中实例化它们吗?
我的助手有一个直接的动作,被称为Controllers_Helpers_Redirectlogin
.
感谢您的帮助,我很感激!
Zend建议将 mvc 中的控制器动作助手放入/application/controllers/helpers
. 这是使用这些的正确方法吗?
我必须在 bootstrap/application.ini 中实例化它们吗?
我的助手有一个直接的动作,被称为Controllers_Helpers_Redirectlogin
.
感谢您的帮助,我很感激!
遵循建议是好的。默认情况下,即使您引用的手册页指出,自动加载器似乎并未设置为默认查看推荐的路径:
controllers/helpers/:这些目录将包含操作助手。动作助手将被命名为默认模块的“ Controller_Helper_ ”或其他模块的“ _Controller_Helper ”。
为了解决这个问题,只需将其添加到您的Bootstrap.php
文件中,向 HelperBroker 提示要查看的其他路径:
// for default module in a non-modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/controllers/helpers',
'Controller_Helper'
);
// for default module if using modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/modules/default/controllers/helpers',
'Controller_Helper'
);
// for "Admin" module when using a modular structure
Zend_Controller_Action_HelperBroker::addPath(
APPLICATION_PATH . '/modules/admin/controllers/helpers',
'Admin_Controller_Helper'
);
另请注意,为了使自动加载器正常工作,您应该命名您的类Controller_Helper_RedirectLogin
而不是Controllers_Helpers_RedirectLogin
. 通常自动加载的类会去掉复数形式(例如models/User.php
映射到class Model_User
)。
编辑:您也可以告诉助手代理application.ini
文件中的助手路径。例子:
; non-modular structure
resources.frontController.actionHelperPaths.Controller_Helper = APPLICATION_PATH "/controllers/helpers"
; "admin" module in a modular structure
resources.frontController.actionHelperPaths.Admin_Controller_Helper = APPLICATION_PATH "/modules/admin/controllers/helpers"