我使用
生成了Laravel的身份验证代码php artisan make:auth
自动生成的注册表单提供以下字段: 姓名,电子邮件和密码。
我试图添加名字,姓氏而不仅仅是名字。我已经成功创建了数据库表和带有字段的表单(视图)。当我测试并注册用户时,会保存密码和电子邮件字段,但不会保存名字和姓氏。
我的猜测是我错过了一个我没有修改过的文件。
哪个页面定义了写入数据库的字段?
这是我在authcontroller中的验证器和身份验证代码:
/**
* 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:8|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']),
]);
}
如果我改变了#first_name'名字'它确实在控制器和数据库表上保存。验证器运行良好。
答案 0 :(得分:0)
您需要找到AuthController
中的app/Http/Controllers/Auth
。
在那里,您需要更改validator()
和create()
方法,以包含firstname
和lastname
字段。
希望这有帮助!
答案 1 :(得分:0)
我缺少的修改是在user.php文件中:
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name', 'last_name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
我添加的字段需要包含在protected $ fillable中。我做了那个改变,一切正常。