Mar*_*ark 1 laravel eloquent laravel-4
我有一个基本的laravel 4应用程序,允许有人注册然后登录.我试图这样做,以便当用户成功完成注册时,他们会自动登录.我收到一个错误异常'传递给Illuminate的声明1\Auth\Guard :: login()必须是Illuminate\Auth\UserInterface的实例,User的实例'.我明白这意味着传递给login方法的第一个参数不正确但我不明白为什么当laravel文档说使用时它不正确
$user = User::find(1);
Auth::login($user);
Run Code Online (Sandbox Code Playgroud)
这是我的控制器
<?php
Class UsersController extends BaseController {
public $restful = 'true';
protected $layout = 'layouts.default';
public function post_create()
{
$validation = User::validate(Input::all());
if ($validation->passes()) {
User::create(array(
'username'=>Input::get('username'),
'password'=>Hash::make(Input::get('password'))
));
$user = User::where('username', '=', Input::get('username'))->first();
Auth::login($user);
return Redirect::Route('home')->with('message', 'Thanks for registering! You are now logged in!');
}
else {
return Redirect::Route('register')->withErrors($validation)->withInput();
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我可以想到一些场景:
User带有新的Laravel安装的模型(听起来不太可能,但实现了UserInterface,如果你编辑或创建了一个新的,你可能不会这样做).User::create() 未成功调用(未成功创建用户)$user = User::where()->... 没有导致结果尝试:
$user = User::create(array(
'username'=>Input::get('username'),
'password'=>Hash::make(Input::get('password'))
));
Auth::login($user);
Run Code Online (Sandbox Code Playgroud)
如果仍然出现错误,则可能$user不是User对象,因为未成功创建用户.
| 归档时间: |
|
| 查看次数: |
5567 次 |
| 最近记录: |