我有一个使用通配符监听任何sentinel.user.*
事件的事件监听器。
这是听众:
Event::listen('sentinel.user.*', function ($userID = null){
error_log('log listener fired');
$userLog = new UserLog;
$EventNameExploded = explode("." , Event::firing());
$EventNameEnding = array_pop($EventNameExploded);
$logAction = "User " . $EventNameEnding;
$logData = array('eventDescription' => $logAction);
$userLog->submitLog($logData,$userID);
},99);
由于某些原因,这不会触发sentinel.user.forgot
事件。它会触发任何其他sentinel.user
事件。
在排除故障时,我为特定的sentinel.user.forgot
事件添加了一个监听器:
Event::listen('sentinel.user.forgot', function (){
error_log('forgot listener fired');
}, 98);
此事件侦听器将触发。我甚至给它一个低于日志事件的优先级,日志事件不会触发,但忘记特定的事件将触发。我甚至没有优先级高于99
或98
的听众。
有谁知道听众没有解雇的原因???
编辑:
以下是触发sentinel.user.forgot
事件的代码:
public function forgot()
{
// Form Processing
$result = $this->forgotPasswordForm->forgot( Input::all() );
if( $result['success'] )
{
Event::fire('sentinel.user.forgot', array(
'email' => $result['mailData']['email'],
'userId' => $result['mailData']['userId'],
'resetCode' => $result['mailData']['resetCode']
));
// Success!
Session::flash('success', $result['message']);
return Redirect::route('home');
}
else
{
Session::flash('error', $result['message']);
return Redirect::route('Sentinel\forgotPasswordForm')
->withInput()
->withErrors( $this->forgotPasswordForm->errors() );
}
}