修改默认 Laravel 身份验证

Modifying default Laravel authentication

我使用

导入了 Laravels 身份验证

Php artisan make: auth

我正在尝试向注册页面添加一个附加字段。新字段是一个 drop-down,有两个用户类型选项。 Landlord/Tenant。当我点击注册时,我被重定向到登录脚本,我的所有详细信息仍然存在,注册还没有完成。其他任何地方都可能有问题,

我更新了我的模型并重新迁移了它。我还将它添加到用户 class.

的可填充数组中

注册Blade模板

                <div class="form-group row">
                  <label for="user-type" class="col-md-4 col-form-label text-md-right">User Type</label>
                    <div class="col-md-6">
                      <select class ="form-control" id="user-type">
                        <option>Landlord</option>
                        <option>Tenant</option>
                      </select>
                      @if ($errors->has('user-type'))
                          <span class="invalid-feedback">
                              <strong>{{ $errors->first('email') }}</strong>
                          </span>
                      @endif
                    </div>
                </div>

注册控制器

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
        'user-type' => 'required|string',
    ]);
}

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

用户Class

protected $fillable = [
        'name', 'email', 'password', 'user-type'
    ];

用户迁移

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('user-type');
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

如您所见,我已将 user-type 添加到所有我认为需要添加的地方,我是否遗漏了什么地方?

创建 HTML 元素时,在请求中发送的是值,这些值由每个字段上名为 name 的属性 keyed,并且如您所见,您的 select 缺少该属性,请尝试:

<select class="form-control" name="user-type">

要对此进行测试,您可以在创建新用户之前将 dd($data); 放入 create 方法中