向laravel的基本身份验证系统添加另一个输入字段

时间:2019-08-26 13:58:01

标签: php laravel authentication

我试图添加另一个输入字段,该字段将得到验证并且是必需的。我正在按照freecodecamp的说明进行讲解,但是以某种方式它仍然对我不起作用

这是我的编码:

我已经尝试过2次。 我已经尝试了一些东西,但是没有用,所以我将其撤消了

这是代码。

用户表模型:

<?php
class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('username')->unique();
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

这是我在register.bade文件中添加的字段:

<div class="form-group row">
                            <label for="username" class="col-md-4 col-form-label text-md-right">{{ __('username') }}</label>

                            <div class="col-md-6">
                                <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" username="username" value="{{ old('username') }}"  autocomplete="username" autofocus>

                                @error('username')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

registerController:

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

    /**
     * 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'],
            'username' => $data['username'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

和user.php:

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

在完成所有这些操作以添加用户名之后,我按如下所示迁移了表:

php artasin migrate:fresh

所以我虽然可以像在视频中那样工作,但是现在当我填写表单时,我得到了一个验证,说我必须填写表单(虽然我这样做了),但数据库中没有任何内容

1 个答案:

答案 0 :(得分:0)

我认为我发现了您的错误。您尚未在register.bade文件中完全定义输入字段名称。您目前具有这样的功能:

<input id="username" type="text" class="form-control @error('username') is-invalid @enderror" username="username" value="{{ old('username') }}"  autocomplete="username" autofocus>

在此输入中,您具有 username =“ username” ,该名称对输入字段名称的定义不正确,因此Laravel即使填充该字段也不会注册该字段,但看起来for name =“ username”(您的表单上没有),则会收到验证错误。

将其更改为此:

name="username"