1

默认情况下,注册页面的表单上有姓名、电子邮件、密码和确认密码,如下所示:

<div class="container d-flex flex-column justify-content-between vh-100">
    <div class="row justify-content-center mt-5">
      <div class="col-xl-5 col-lg-6 col-md-10">
        <div class="card">
          <div class="card-header bg-primary">
            <div class="app-brand">
              <a href="/index.html">
              </a>
            </div>
          </div>
          <div class="card-body p-5">
            <h4 class="text-dark mb-5">Register</h4>
            <form method="POST" action="{{ route('register') }}">
              @csrf
  
              <div class="row">
                <div class="form-group col-md-12 mb-4">
                  <input type="text" name="name" :value="old('name')" required autofocus autocomplete="name" class="form-control input-lg" id="name" aria-describedby="nameHelp" placeholder="Name">
                  
                  @if ($errors->has('name'))
                  <span class="invalid-feedback">
                      <strong>{{ $errors->first('name') }}</strong>
                  </span>
                 @endif


                </div>
                <div class="form-group col-md-12 mb-4">
                  <input type="email" name="email" :value="old('email')" required class="form-control input-lg" id="email" aria-describedby="emailHelp" placeholder="Email">
                </div>
                <div class="form-group col-md-12 ">
                  <input type="password" name="password" required autocomplete="new-password" class="form-control input-lg" id="password" placeholder="Password">
                </div>
                <div class="form-group col-md-12 ">
                  <input type="password" name="password_confirmation" required autocomplete="new-password" class="form-control input-lg" id="cpassword" placeholder="Confirm Password">
                </div>
                <div class="col-md-12">

                  <input type="checkbox" name="terms" value="true" {{ !old('terms') ?: 'checked' }}>
                  <label>Do you agree to Terms & Conditions</label><br/><br/>


                  <button type="submit" class="btn btn-lg btn-primary btn-block mb-4">Sign Up</button>
                  <p>Already have an account?
                    <a class="text-blue" href="{{ route('login') }}">Sign in</a>
                  </p>
                </div>
              </div>
            </form>

          </div>
        </div>
      </div>

然后在User Model我们有以下可填充数据:

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

由于我是 laravel 的初学者,我想添加两个字段并确保它们也保存在数据库中。我想添加电话和出生日期字段。

我想知道为了使其可填充并将它们添加到数据库中需要采取哪些步骤?

4

1 回答 1

1

你有两种选择

1.在可填充中添加列,如下所示

 protected $fillable = [
        'name',
        'email',
        'password',
        'username',
         'phone',
       'date_of_birth'
    ];

2.使用$guarded

 protected $guarded=['id'];

这将允许填充除 id 之外的所有内容

在刀片文件中添加两个输入

<div class="form-group col-md-12 mb-4">
                  <input type="text" name="phone" :value="old('phone')" required autofocus autocomplete="phone" class="form-control input-lg" id="name" aria-describedby="nameHelp" placeholder="Phone">
                  
                  @if ($errors->has('phone'))
                  <span class="invalid-feedback">
                      <strong>{{ $errors->first('name') }}</strong>
                  </span>
                 @endif

   <div class="form-group col-md-12 mb-4">
                  <input type="text" name="date_of_birth" :value="old('date_of_birth')" required autofocus autocomplete="date_of_birth" class="form-control input-lg" id="name" aria-describedby="nameHelp" placeholder="Date Of Birth">
                  
                  @if ($errors->has('date_of_birth'))
                  <span class="invalid-feedback">
                      <strong>{{ $errors->first('name') }}</strong>
                  </span>
                 @endif

改变App\Http\Controllers\Auth\RegisterController方法

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
          'phone'=>$data['phone'],
           'date_of_birth'=>$data['date_of_birth'],
        ]);
    }

如果您需要验证,那么您也可以添加它

 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:8', 'confirmed'],
            'phone' => ['required', 'number'],
            'date_of_birth' => ['required',],
        ]);
    }
于 2021-06-22T04:29:20.027 回答