laravel 5.1用户注册数据库插入


laravel 5.1 user registration database insertion

首先我有一个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