我正在阅读UserMapper
中的ZfcUser Zend Framework Module
代码,因为我认为我可以在构建我之前获得使用zends auth系统的一般概念并对某些事情感到好奇。
在第19行的(click here)中,我们有以下代码:
$this->getEventManager()->trigger('find', $this, array('entity' => $entity));
我真的想知道在哪里可以找到被触发的“查找”事件,或者它是未来可能发现事件的占位符
我查看了模块文件和其他一些文件,无法找到它
答案 0 :(得分:1)
Zfcuser
是一个非常完整的模块,具有很多功能,在正常的基本身份验证中你不需要。这些功能包括ZfcUser
触发但不需要它的几个事件,只是用户需要对此事件执行特定操作。
此外,ZfcUser
可以与BjyAuthorize和roleuserbridge等其他模块一起使用,以提供更多功能(acl和用户角色管理...),这些第三方模块可以使用ZfcUser
触发的事件。
例如,您要记录每个用户身份验证,您可以在authenticate
方法中使用onBootstrap()
事件:(来自here的示例):
$sm = $e->getApplication()->getServiceManager();
$zfcAuthEvents = $e->getApplication()->getServiceManager()->get('ZfcUser\Authentication\Adapter\AdapterChain')->getEventManager();
$zfcAuthEvents->attach( 'authenticate', function( $authEvent ) use( $sm ){
try {
$remote = new \Zend\Http\PhpEnvironment\RemoteAddress;
$remote->setUseProxy( true );
$mapper = $sm->get( 'auth_log_mapper' );
$log_entity = new \FooUser\Entity\UserAuthenticationLog;
$log_entity->populate(
array(
'user_id' => $authEvent->getIdentity(),
'auth_time' => new \DateTime( "now" ),
'ip_address' => $remote->getIpAddress()
)
);
$mapper->save( $log_entity );
return true;
} catch( \Exception $x ) {
// handle it
}
});
因此find
事件可能对ZfcUser
没有用处,它不是此模块未来开发的占位符,如果你需要做一些事情,它对你来说是一个钩子。用户可以在用户存储库中找到...