无法在Laravel中捕获Cartalyst\Sentinel\Checkpoints\NotActivatedException

ark*_*Dev 2 php acl laravel laravel-4

我正在学习如何使用Cartalyst/Sentinel.

我有

1)安装Laravel并导入包.运行迁移并生成必要的表.2)我创建了用户注册表和控制器

  1. 创建一条记录
  2. 创建激活码
  3. 向用户发送包含激活链接的电子邮件.

如果用户通过单击链接激活,则他们可以登录.

如果他们不激活他们不能​​(这是我想要的).

我的问题是我有以下方法试图捕获是否存在NotActivatedException.我想将用户重定向到主页,提醒用户该帐户未激活.但我得到Laravel错误消息而不是我的视图显示错误.这是我的代码.

public function 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.');

}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么捕获不起作用,因为我想显示登录页面,错误指出"帐户未激活".相反,我得到了这样的Laravel调试页面.

在此输入图像描述

Ant*_*iro 5

您必须使用完整的类名:

catch (\Cartalyst\Sentinel\Checkpoints\NotActivatedException $e)
Run Code Online (Sandbox Code Playgroud)