我想捕捉的洛事件在zendframework2,然後更新數據庫,當用戶在上次登錄。捕獲登錄事件zendframework 2
我知道,如果我做的以下onBootstrap我的模塊(MVCEvent $ E)我將能夠捕獲事件等:
$eventManager = $e->getApplication()->getEventManager();
$em = $eventManager->getSharedManager();
$em->attach(
'ZfcUser\Authentication\Adapter\AdapterChain',
'authenticate',
function($e)
{
$id = $e->getIdentity();
}
);
這會給我的用戶的標識。然而,混亂是我可以從bootstrap更新我的數據庫。我的意思是,我沒有訪問實體經理在我的bootstrap中,我不知道如何在那裏運輸它。實體管理器保存在服務配置文件中。
即 getServiceConfig()
'Members\Model\WorkerTable' => function($sm) {
$db = $sm->get('doctrine.entitymanager.orm_default');
$table = new Model\MemberTable($db);
return $table;
},
。
經過以上設置後,我能夠訪問該實體管理器在我MemberTable類
所以,一個簡單的解決方案是將洛事件管理轉移到我的 ** MemberTable類**我將使用我的實體管理器來更新數據庫。
問題,我不知道該如何設置了:
$eventManager = $e->getApplication()->getEventManager();
$em = $eventManager->getSharedManager();
我的意思是,我不知道如何讓變量$ e取入MemberTable類,這樣我可以訪問eventManger和sharedManager。
總結;這個問題是雙重的。
- 如何獲得實體管理器到自舉功能
替代地
- 如何獲得的eventmanager進行和共享eventmanager進行到一個普通的類所以我可以在已經包含實體管理器的類中調用事件管理器
喜下一步開發。好想法。謝謝你。它幫助我將實體管理器引入引導程序。但是我怎麼才能讓實體管理者進入封閉。我已更新我的問題以顯示問題 – 2014-10-20 12:32:21
我已更新回答 – 2014-10-20 12:47:14
啊。我明白。讓我試試吧。謝謝Next Developer坦克 – 2014-10-20 13:10:06