0

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

我必须在 bootstrap/application.ini 中实例化它们吗?

我的助手有一个直接的动作,被称为Controllers_Helpers_Redirectlogin.

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

4

1 回答 1

2

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

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"
于 2012-06-25T20:32:51.207 回答