我试图添加另一个输入字段,该字段将得到验证并且是必需的。我正在按照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
所以我虽然可以像在视频中那样工作,但是现在当我填写表单时,我得到了一个验证,说我必须填写表单(虽然我这样做了),但数据库中没有任何内容
答案 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"