2017-02-17 177 views
2

我试图通过使用模态窗口和添加一些新字段来修改laravel的默认身份验证系统。 所以,我有一个模式窗口注册新用户,看起来像这样:Laravel默认身份验证与模式

<!-- Modal Register area --> 
<div class="modal fade" id="registerModal" tabindex="-1" role="dialog" aria-labelledby="myRegisterLabel" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <form id="formRegister" class="login-form" action="{{ route('register') }}" method="POST"> 

     {{ csrf_field() }} 

     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
      </button> 
      <h4 class="modal-title" id="myRegisterLabel">Sign Up</h4> 
     </div> 
     <div class="modal-body"> 
      <div class="form-group"> 
      <label>First Name:</label> 
      <input type="text" name="first_name" placeholder="first name..." value="{{ old('first_name') }}" required autofocus> 
      </div> 
      <div class="form-group"> 
      <label>Last Name:</label> 
      <input type="text" name="last_name" placeholder="last name..." value="{{ old('last_name') }}" required autofocus> 
      </div> 
      <div class="form-group"> 
      <label>Email:</label> 
      <input type="email" name="email" placeholder="email..." value="{{ old('email') }}" required> 
      </div> 
      <div class="form-group"> 
      <label>Password:</label> 
      <input type="password" name="password" required> 
      </div> 
      <div class="form-group"> 
      <label>Password Confirmation:</label> 
      <input type="password" name="password_confirmation" required> 
      </div> 
      <div class="form-group"> 
      <button type="submit" class="btn btn-primary"> 
       Register 
      </button> 
      </div> 
     </div> 
     </form> 
     @if(count($errors)) 
     @foreach ($errors->all() as $error) 
      <div class="alert alert-danger"> 
      <p>{{ $error }}</p> 
      </div> 
     @endforeach 
     @endif 
    </div> 
    </div> 
</div> 
<!-- End Modal Register area --> 

然后我修改了RegisterController验证规则和创建方法,包括这个新的领域以及迁移文件。 (所以,我在数据库中的Fileds,一切都很好有)

RegisterController:

<?php 

namespace App\Http\Controllers\Auth; 

use App\User; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Foundation\Auth\RegistersUsers; 
use Illuminate\Http\Request; 

class RegisterController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Register Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users as well as their 
    | validation and creation. By default this controller uses a trait to 
    | provide this functionality without requiring any additional code. 
    | 
    */ 

    use RegistersUsers; 

    /** 
    * Where to redirect users after registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'first_name' => 'required|max:255', 
      'last_name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 
     return User::create([ 
      'first_name' => $data['first_name'], 
      'last_name' => $data['last_name'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 
} 

在形式,你可以看到我张贴这种路由(“注册”),但即使我没有得到任何错误,当我提交表单,我得到重定向到/用户没有得到保存在数据库.. 事情是,我不太确定这个默认身份验证系统如何工作..

感谢您的帮助!

+0

你的字段添加到您的$可填写财产上的模型? –

+0

是的,我做了,我忘了提及。 –

+0

因此,在您制作和创建时,您添加的新字段在哪里? –

回答

0

我认为提供的代码是非常正确的。请确保在您的迁移中删除了name字段表格users表格。

使用你的代码我能够注册一个用户与你的模态和控制器。是新鲜的Laravel 5.4,你的模态被放置在welcome.blade.php。另外css/js文件加入了&一个按钮来显示模式。

这是我up()迁移更新users

public function up() 
    { 
     Schema::table('users', function (Blueprint $table) { 
      $table->dropColumn('name'); 
      $table->string('first_name')->nullable(); 
      $table->string('last_name')->nullable(); 
     }); 
    } 

也更新User模型与新fillables:

protected $fillable = [ 
    'email', 'password', 'first_name', 'last_name' 
]; 
+0

嗯..我做了什么之后我运行make:auth进行默认身份验证,我直接进入用户迁移并删除了'name'字段,然后添加了我的first_name,last_name 。之后,我运行了php工匠迁移。这应该是问题吗? –

+0

是的,你可以修改现有的迁移,如果如果没有运行过。所以这不应该是一个问题 –

+0

好吧,我终于能够得到这个运行,我现在感到非常愚蠢哈哈..问题是与我的模态,我忘了我把我的密码验证min:6,我是输入一个4个字符的密码。因为模式在提交后关闭,所以我没有注意到。感谢大家! –