【问题标题】:Access action-helper inside front-controller plugin访问前端控制器插件中的动作助手
【发布时间】:2013-05-18 03:35:16
【问题描述】:

我正在尝试从插件(在引导程序中注册)调用助手视图。从任何控制器我都可以毫无问题地访问,但不能从插件访问。下面是我的代码。任何帮助表示赞赏。 谢谢你。米格尔

class Plugins_security extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch (Zend_Controller_Request_Abstract $request)
    {
        $auth = Zend_Auth::getInstance();
        $moduleName = $request->getModuleName();
        if ($request->getModuleName() != "auth") 
        {
            $auth = Zend_Auth::getInstance();
            if (! $auth->hasIdentity()) 
            {
                $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper(
                'redirector');
                $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessages');
                $flashMessenger->flashMessenger (array('message' => 'Sessao expirada', 'status' => 'error'));
                $redirector->gotoUrl('/auth/login/')->redirectAndExit();
            }
        }
    }
} 

我收到以下错误。 致命错误:未在注册表中找到带有消息“插件名称“FlashMessages”的未捕获异常“Zend_Loader_PluginLoader_Exception”;使用的路径: Zend_Controller_Action_Helper_: Zend/Controller/Action/Helper/' in /usr/local/zend/share/ZendFramework/library/Zend/Loader/PluginLoader.php:412 堆栈跟踪:#0 /usr/local/zend/share /ZendFramework/library/Zend/Controller/Action/HelperBroker.php(366):

【问题讨论】:

    标签: zend-framework helper front-controller


    【解决方案1】:

    你必须改变

    Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessages');

    Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');

    例子:

    $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); $flashMessenger->addMessage(array('error' => 'Session expired'));

    希望这对您有所帮助。未测试

    【讨论】:

    • FlashMessenger 不是我的助手的名字,名字是 FlashMessages,我在那个类中调用:Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
    • 那么您需要在 Plugins_security 注册之前在应用程序引导程序中注册您的助手 FlashMessages。以便它可用。
    • 如何注册视图助手。我可以在整个应用程序中访问此助手,但不能在插件类中访问。
    • First FlashMessenger 不是视图助手,而是动作助手。我们像这样注册插件 protected function _initPlugins() { //你的操作助手应该在 $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new Custom_Plugin_PluginName()); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2019-06-12
    • 2011-09-23
    • 2023-03-27
    相关资源
    最近更新 更多