我正在学习如何使用Cartalyst / Sentinel。
我已经
了1)安装了Laravel并导入了包。运行迁移并生成必要的表。 2)我创建了用户注册表单和控制器
如果用户通过点击链接激活,则可以登录。
如果他们没有激活他们不能(这是我想要的)。
我的问题是我有以下方法试图捕获是否存在NotActivatedException。我想将用户重定向到主页,提醒用户该帐户未激活。但我得到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调试页面。
答案 0 :(得分:5)
您必须使用完整的班级名称:
catch (\Cartalyst\Sentinel\Checkpoints\NotActivatedException $e)
答案 1 :(得分:2)
您还可以在控制器文件的顶部添加use Cartalyst\Sentinel\Checkpoints\NotActivatedException;
,以便能够在不使用完整班级名称的情况下访问它。
在提及NotActivatedException
的每个控制器中执行此操作。