推荐的 mvc 文件夹结构中的 Zend 操作助手


Zend Action Helper in recommended mvc folder structure

Zend建议将mvc中的控制器操作助手放入/application/controllers/helpers中。这是使用这些的正确方法吗?

我是否必须在引导/应用程序中实例化它们.ini?

我的助手有一个直接的操作,称为Controllers_Helpers_Redirectlogin

感谢您的帮助,我很感激!

遵循建议是好的。 默认情况下,默认情况下,自动加载器似乎并未设置为在建议的路径中查找,即使您引用的手册页指出:

控制器/帮助程序/:这些目录将包含操作帮助程序。 操作帮助程序将命名空间为"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"