Php zf2:从SharedEventManager到控制器的参数
我正在尝试向我的zf2应用程序添加头身份验证,将侦听器绑定到分派事件 我的侦听器在分派时正确执行,并返回错误并停止响应的传播 问题是,当一切正常时,我想在请求中设置CurrentUsers参数,以便从控制器获取它 这是我现在的代码: Module.phpPhp zf2:从SharedEventManager到控制器的参数,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我正在尝试向我的zf2应用程序添加头身份验证,将侦听器绑定到分派事件 我的侦听器在分派时正确执行,并返回错误并停止响应的传播 问题是,当一切正常时,我想在请求中设置CurrentUsers参数,以便从控制器获取它 这是我现在的代码: Module.php public function onBootstrap(MvcEvent $event) { $app = $event->getApplication(); $sm = $app->getS
public function onBootstrap(MvcEvent $event)
{
$app = $event->getApplication();
$sm = $app->getServiceManager();
$em = $app->getEventManager();
$listener = $sm->get('MyAuthListener');
$em->getSharedManager()->attach(
'eventIdentifierForMyAbstractController',
MvcEvent::EVENT_DISPATCH,
$listener
);
}`
这个听众应该做这项工作
public function __invoke(MvcEvent $event)
{
$result = $this->adapter->authenticate();
if (!$result->isValid()) {
//Invalidation process
}
/validation Process
$event->setParam('user', $result->getIdentity());
}
在我这方面,几乎一切都正常$result->getIdentity()
正在为我提供正确的标识<代码>$event->setParam('user',$result->getIdentity())在侦听器中正确设置事件的标识
但是,在我的控制器中,当我执行以下操作时:
$this->getEvent()->getParam('user')
参数为空(即={}
),但如果ivar\u dump($result->getIdentity())
,则对象将完全创建
我可以传递一个参数$this->getEvent()->getParam('hello','hello')
,这样就可以了
我不明白为什么。文档中说它需要一个混合类型,所以应该可以
如果您需要更多信息,请随时询问。您必须给您的侦听器更高的优先级,使其在发送控制器操作的侦听器之前执行。例如100
$em->getSharedManager()->attach(
'eventIdentifierForMyAbstractController',
MvcEvent::EVENT_DISPATCH,
$listener,
100
);
谢谢,它成功了。我还需要正确地提取
$user
,因为它不能在JsonModel中正确地呈现。使用自定义水合器构建我的身份解决方案。