当新用户向应用程序注册时添加表单字段

Joh*_*pit 3 php laravel eloquent laravel-5

我正在尝试users在Laravel 5创建的表中添加一个字段.我已经修改了迁移以添加该字段:

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->string('my_new_field'); // Added this field
            $table->rememberToken();
            $table->timestamps();
        });
    }
    ...    
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Laravel提供的默认身份验证系统.每当新用户注册时,我都需要my_new_field设置一些值.我是如何(以及在​​哪里)这样做的?

AuthController处理的认证过程.它使用trait AuthenticatesAndRegistersUserspostRegister()函数处理注册请求.但实际插入的值在哪里?

Joh*_*pit 6

create()在方法App\Services\Registrar负责创建一个新的User实例.我在这个函数中添加了字段:

   /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    public function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'my_new_field' => 'Init Value'
        ]);
    }
Run Code Online (Sandbox Code Playgroud)

根据文件,

要修改新用户向应用程序注册时所需的表单字段,您可以修改App\Services\Registrar 该类.此类负责验证和创建应用程序的新用户.

validator注册器的方法包含应用程序的新用户的验证规则,而create注册器的方法负责在数据库中创建新的用户记录.您可以根据需要随意修改这些方法.注册器由特征中AuthController包含的方法调用AuthenticatesAndRegistersUsers.

更新2016年2月3日 Laravel 5.2 app/Services/Registrar.php文件中的设置已移至app/Http/Controllers/Auth/AuthController.php

我还必须在User模型中填写此字段:

class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
     ...
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name', 'email', 'password', 'my_new_field'];
    ...
}
Run Code Online (Sandbox Code Playgroud)