展开artisan make:auth

时间:2016-10-30 00:44:56

标签: laravel-5.2 artisan

我使用

生成了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'名字'它确实在控制器和数据库表上保存。验证器运行良好。

2 个答案:

答案 0 :(得分:0)

您需要找到AuthController中的app/Http/Controllers/Auth

在那里,您需要更改validator()create()方法,以包含firstnamelastname字段。

希望这有帮助!

答案 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中。我做了那个改变,一切正常。