访问flash messenger不是来自控制器

时间:2013-08-18 20:23:24

标签: php zend-framework2

我正在使用zend framework 2.2.2编写PHP应用程序。

我想知道如何使用zend framework 2来使用FlashMessanger。

现在我知道可以使用以下代码使用zf1获取Flash Messanger:

        $this->messenger = Zend_Controller_Action_HelperBroker::getStaticHelper('flashMessenger');

如何使用zf2获取flash信使?

问题是我希望flash Messenger可以在我自己的实用程序类中使用 所以我没有控制器可以从那里获取信使。

任何想法?

感谢

1 个答案:

答案 0 :(得分:2)

FlashMessenger是一个ControllerPlugin Zend\Mvc\Controller\Plugin\FlashMessenger,这是它最有意义的使用它。将Messenger注入你的“UtilityClasses”对我来说听起来有点糟糕,因为这会使响应检查变得更加复杂,控制器也会变得更加臃肿。所以请记住这一点。

然而,可以将FlashMessenger带入您想要的任何课程。唯一的问题是,您希望FM可用的所有类都必须由ServiceManager调用。您的ServiceFactories将如下所示:

// Module#getServiceConfig() 
return array('factories' => array(
    'MyServiceClass' => function($serviceLocator) {
        return new MyService(
            $serviceLocator->get('controllerpluginmanager')->get('flashmessenger')
        );
    }
));

当然,如果您希望注入完整的ServiceLocator(不建议使用),您可以重新编写它以在您的ServiceClass中使用setter-injection甚至是lazy-getters。