Невозможно поймать Cartalyst \ Sentinel \ Checkpoints \ NotActivationException в Laravel

Я учусь использовать Cartalyst / Sentinel.

Я

1) Установил Laravel и импортировал пакет. Запустите миграции и сгенерируйте необходимые таблицы.
2) Я создал форму регистрации пользователя и контроллер, который

  1. Создает запись
  2. Создает код активации
  3. Посылает пользователю электронное письмо со ссылкой для активации.

Если пользователь активирует, нажав на ссылку, он может войти в систему.

Если они не активируются, они не могут (что я и хочу).

Моя проблема в том, что у меня есть следующий метод, который пытается поймать, если есть NotActivationException. Я хочу перенаправить пользователя на домашнюю страницу, которая предупреждает пользователя о том, что эта учетная запись не активирована. Но я получаю сообщение об ошибке Laravel, а не мое представление, которое отображает ошибку. Вот мой код

публичная функция postSignin () {

try {

// Validation
$validation = Validator::make(Input::all(), [
'email' => 'required|email',
'password' => 'required'
]);

if ($validation->fails()) {
return Redirect::route('signin')->withErrors($validation)->withInput();
}

$remember = (Input::get('remember') == 1) ? true : false;

if ($user = Sentinel::authenticate(Input::all(), $remember)) {
return Redirect::route('home')->with('global', 'Howdy ' . $user->username . '!');
}

$errors = 'Invalid Email / Password';

return Redirect::route('signin')->with('global', $errors);

} catch (NotActivatedException $e) {

$errors = 'Account not activated.';

return Redirect::route('signin')->with('global', $errors);

}

return Redirect::route('home')->with('global', 'There was a problem signing you in.');

}

Я не уверен, почему улов не работает, так как я хотел бы отобразить страницу входа с ошибкой, которая гласит: «Учетная запись не активирована». Вместо этого я получаю страницу отладки Laravel, которая выглядит следующим образом.

введите описание изображения здесь

2

Решение

Вы должны использовать полное имя класса:

catch (\Cartalyst\Sentinel\Checkpoints\NotActivatedException $e)
5

Другие решения

Вы также можете добавить use Cartalyst\Sentinel\Checkpoints\NotActivatedException; вверху вашего файла контроллера, чтобы иметь доступ к нему без использования полного имени класса.

Сделайте это в каждом контроллере, который упоминает NotActivatedException,

2