Ruby 程序员学习 Laravel 框架笔记 (6)-修改 User model

2017.08.09 重新修改,加了动图,修改代码

上一篇文章Ruby 程序员学习 laravel 框架笔记 (5)-简单的用户认证讲到了laravel本身集成了登录和注册的功能,虽然这个功能已经很不错了,但有时候还是要根据自己的需求改改。

比如,用户名,我们要改成首字母大写的,比如,用户输入hfpp2012,存到数据库的时候,我们要自动变成Hfpp2012

现在我们来实现一下。

1. 修改 controller

首字母大写还是很简单的,一个函数即可,就是ucfirst

我们找到注册相关的controller。

找到app/Http/Controllers/Auth/RegisterController.php文件。

把下面的这一段改一下:

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

<?php

...

class RegisterController extends Controller
{
    ...
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
    ...
}
?>

改成

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

<?php

...

class RegisterController extends Controller
{
    ...
    protected function create(array $data)
    {
        return User::create([
            // 注意这一行有变化,加了一个ucfirst函数
            'name' => ucfirst($data['name']),
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
    ...
}
?>

这样就可以了,再去注册一个用户,应该变成了大写的首字母。

查看一下数据库,果然。

2. 修改 model

就像ruby那样,这种代码我们一般不会放在controller中的,我们尽量地保持controller小,而model胖一些。

所以我们去掉刚才的改动,找到User这个model,即是app/User.php这个文件。

我们加入下面的方法:

// app/User.php

<?php

...

class User extends Authenticatable
{
    use Notifiable;
    ...
    // setNameAttribute 方法是新增的
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = ucfirst($value);
    }
}
?>

你会发现效果一样的。

完结。

下一篇:Ruby 程序员学习 laravel 框架笔记 (7)-User model 的 getter 方法

本作品采用《CC 协议》,转载必须注明作者和本文链接
咱们的学习圣地是: https://www.qiuzhi99.com,这里有不限于 Nodejs、React、TypeScript、GraphQL 相关的精品课程。
本帖由 Summer 于 7年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

今天重新修改了内容,加上了动图,其他所有文章,能加动图的都会修改,这样读者就能更好地观看效果

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!