首先我有一个UserController
控制器来验证新用户并注册他们。我有两种方法index
用于登录,create
用于注册新用户。但Create
方法不起作用,不会发生错误,但数据不会进入数据库表。
其次,signup
表单在提交后重新加载到其自身。signup
表单没有任何作用。
userController
代码:
<?php namespace App'Http'Controllers;
use Illuminate'Http'Request;
use Auth;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use Illuminate'Support'Facades'Redirect;
use Illuminate'Contracts'Hashing'Hasher;
use Illuminate'Http;
use Illuminate'Support'Facades'Input;
use Hash;
class UserController extends Controller
{
public function __construct(){
$this->middleware('auth');
}
public function index()
{
$cred = Input::only('email','password');
var_dump($cred);
if(Auth::attempt($cred)){
return Redirect::intended('index');
}else{
$error = "Username or password is incorrect.";
return Redirect::to('/signup');
}
}
public function create()
{
$user = new 'App'User;
$user->firstname = Input::get('firstname');
$user->lastname = Input::get('lastname');
$user->username = Input::get('username');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->designation = Input::get('profile_pic');
$user->save();
return view('index');
}
路线:
Route::get('/', function () {
return view('index');
});
Route::get('index', function () {
return view('index');
});
Route::get('login', function () {
return view('login');
});
Route::post('login', 'UserController@index');
Route::get('/signup', function(){
return view('signup');
});
Route::post('/signup', ['uses' => 'UserController@create']);
User
型号代码:
<?php
namespace App;
use Illuminate'Auth'Authenticatable;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Auth'Passwords'CanResetPassword;
use Illuminate'Foundation'Auth'Access'Authorizable;
use Illuminate'Contracts'Auth'Authenticatable as AuthenticatableContract;
use Illuminate'Contracts'Auth'Access'Authorizable as AuthorizableContract;
use Illuminate'Contracts'Auth'CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
protected $table = 'users';
protected $fillable = ['firstname', 'lastname','username','email', 'password','photo'];
protected $hidden = ['password', 'remember_token'];
}
我相信Input facade上的get方法已经被删除,现在使用输入方法。
既然你在使用Laravel,其中一个很酷的功能就是Eloquent和你的模型。你可以这样写你的代码,它会更干净。。。
use App'User;
public function create(Request $request) {
$input = $request->only('firstname', 'lastname', 'username', 'email', 'password', 'profile_pic');
return User::create($input);
}
在您的情况下,您正在构建模型实例,并在以后将其持久化到数据库中。只有当您想在不将模型持久化的情况下进行其他检查时,这才有用。如果你坚持按自己的方式进行,你需要调用facade上的输入方法,如下所示:
$user->firstname = Input::input('firstname');
我希望这能有所帮助!:D