世界上最伟大的投资就是投资自己的教育

全场限时 5 折

首页Laravel
随风 · 练气

Ruby 程序员学习 laravel 框架笔记 (19)-为新添加的属性修改注册功能

随风发布于2236 次阅读

之前为 user 表添加了两个属性,分别是 usernamedob

现在我们来试一下注册功能,如下所示:

报错了!,报错的内容如下:

SQLSTATE[HY000]: General error: 1364 Field 'username' doesn't have a default value 

(SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) 

values (1111, hfpp2012111222@gmail.com11, $2y$10$aJOC/aceiBf3bWh5iIGejOkNLKXXYatLo4X.KEftiRslsdyfP5mTW, 2017-09-08 03:56:19, 2017-09-08 03:56:19))

大体意思是说,username 没有默认值,就是说我们没有给 username 填充值。

我们分为三步来解决这个问题。

1. 加上 view

先给 usernamedob 这两个属性在前端上加上可以填写的 view,当用户注册的时候就可以填写用户名和出生日期。

找到注册的 view 文件:resources/views/auth/register.blade.php

找准位置,加上下面这两段代码:

<!-- 用户名 -->
<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}">
    <label for="username" class="col-md-4 control-label">UserName</label>

    <div class="col-md-6">
        <input id="username" type="text" class="form-control" name="username" value="{{ old('username') }}" required autofocus>

        @if ($errors->has('username'))
            <span class="help-block">
                <strong>{{ $errors->first('username') }}</strong>
            </span>
        @endif
    </div>
</div>

<!-- 出生日期 -->
<div class="form-group{{ $errors->has('dob') ? ' has-error' : '' }}">
    <label for="dob" class="col-md-4 control-label">Dob</label>

    <div class="col-md-6">
        <input id="dob" type="date" class="form-control" name="dob" value="{{ old('dob') }}" required autofocus>

        @if ($errors->has('dob'))
            <span class="help-block">
                <strong>{{ $errors->first('dob') }}</strong>
            </span>
        @endif
    </div>
</div>

2. 更改 controller

view 改好了,controller 要接受新的字段,来修改一下。

找到 app/Http/Controllers/Auth/RegisterController.php 文件,打开之后,找到 create 方法,修改如下:

// app/Http/Controllers/Auth/RegisterController.php

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => $data['password'],
        // 下面两行是新增的
        'username' => $data['username'],
        'dob' => $data['dob'],
    ]);
}

3. 修改 model

这样还不行,需要修改一下 model, 这个有点像 railsStrong Parameters的功能。

找到 app/User.php 方法,找到 $fillable 属性,修改如下:

protected $fillable = [
    // 新增了 username 和 dob
    'name', 'email', 'password', 'username', 'dob'
];

这样数据表 users 就可以存这两个属性了。

最后再试下注册功能,效果如下:

完结。

本站文章均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
Ruby 程序员学习 laravel 框架笔记

Ruby 程序员学习 laravel 框架笔记

ruby程序员带你走进php的世界,轻松学习laravel这个神奇的框架

发表于

喜欢
统计信息
    学员: 29061
    视频数量: 1973
    文章数量: 489

© 汕尾市求知科技有限公司 | Rails365 Gitlab | Qiuzhi99 Gitlab | 知乎 | b 站 | 搜索

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top