Laravel5.5 搭建简单的社区(五)--用户注册

展示前端界面

首先创建一个UsersController

php artisan make:controller UsersController

创建一个注册方法:

    public function register()
    {
        return view('user.register');
    }

创建register.blade.php文件 并编写前端代码:

复制代码
@extends('app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-3" role="main">
                {!! Form::open(['method'=>'POST','url'=>'/user/register']) !!}
                    <!--- Name Field --->
                    <div class="form-group">
                        {!! Form::label('name', 'Name:') !!}
                        {!! Form::text('name', null, ['class' => 'form-control']) !!}
                    </div>
                    <!--- Email Field --->
                    <div class="form-group">
                        {!! Form::label('email', 'Email:') !!}
                        {!! Form::email('email', null, ['class' => 'form-control']) !!}
                    </div>
                    <!--- Password Field --->
                    <div class="form-group">
                        {!! Form::label('password', 'Password:') !!}
                        {!! Form::password('password', ['class' => 'form-control']) !!}
                    </div>
                    <!--- Password_conformation Field --->
                    <div class="form-group">
                        {!! Form::label('password_confirmation', 'Password_conformation:') !!}
                        {!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
                    </div>
                    <!-- 提交 -->
                    {!! Form::submit('注册',['class' => 'btn btn-primary form-control']) !!}
                {!! Form::close() !!}
            </div>
        </div>
    </div>
@stop
复制代码

注册路由:

// 用户注册路由
Route::get('/user/register', 'UsersController@register');

还记得在app.blade.php的导航栏吧 增加一个注册按钮并更新URL:

复制代码
<div>
    <!-- Static navbar -->
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Laravel-App</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#">首页</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="../navbar-static-top/">登 录</a></li>
                    <li><a href="/user/register">注 册</a></li>
                </ul>
            </div><!--/.nav-collapse -->
        </div><!--/.container-fluid -->
    </nav>
</div>
复制代码

前端写好了后开始写注册的PHP代码吧。

 

处理注册数据

首先我们注册post路由并交给UsersController的store方法处理:

// 提交用户注册
Route::post('/user/register', 'UsersController@store');

在处理数据之前我们应该进行表单认证,我们来生成一个request:

php artisan make:request UserRegisterRequest

编写我们的规则:

复制代码
class UserRegisterRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'      => 'required|3',
            'email'     => 'required|email|unique:user,email',
            'password'  => 'required|min:6|confirmed',
            'password_confirmation'      => 'required|min:6',
        ];
    }
}
复制代码

如果要展示错误信息需要在register.balde.php中添加error代码:

扫描二维码关注公众号,回复: 2511435 查看本文章
复制代码
<div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-3" role="main">
                {!! Form::open(['method'=>'POST','url'=>'/user/register']) !!}
                    <!--- Name Field --->
                    <div class="form-group">
                        {!! Form::label('name', 'Name:') !!}
                        {!! Form::text('name', null, ['class' => 'form-control']) !!}
                    </div>
                    <!--- Email Field --->
                    <div class="form-group">
                        {!! Form::label('email', 'Email:') !!}
                        {!! Form::email('email', null, ['class' => 'form-control']) !!}
                    </div>
                    <!--- Password Field --->
                    <div class="form-group">
                        {!! Form::label('password', 'Password:') !!}
                        {!! Form::password('password', ['class' => 'form-control']) !!}
                    </div>
                    <!--- Password_conformation Field --->
                    <div class="form-group">
                        {!! Form::label('password_confirmation', 'Password_confirmation:') !!}
                        {!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
                    </div>
                    <!-- 提交 -->
                    {!! Form::submit('注册',['class' => 'btn btn-primary form-control']) !!}
                    <div>
                        @if($errors->any())
                            <ul class="list-group">
                                @foreach($errors->all() as $error)
                                    <li class="list-group-item list-group-item-danger">{{ $error }}</li>
                                @endforeach
                            </ul>
                        @endif
                    </div>
                {!! Form::close() !!}
            </div>
        </div>
    </div>
复制代码

这样就可以正常的打印出错误信息,但是是英文的,修改这个问题在resources/lang/en/validation.php文件做修改,这个文件中储存着所有的错误信息说明,找到custom数组 我们可以在这里自定义错误信息:

复制代码
    'custom' => [
        'name' => [
            'required' => '用户名不能为空',
        ],
        'password' => [
            'required' => '密码不能为空',
            'min' => '密码不能小于6个字符',
            'confirmed' => '密码验证不符',
        ],
    ],
复制代码

在store方法中应用:

复制代码
    public function store(Requests\UserRegisterRequest $request)
    {
        // 保存用户数据
        // 我们在注册用户时并没有选择头像,这里先给一个默认的头像吧。它的路径在public/images文件夹下
	User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'avatar' => '/images/default-avatar.jpeg',
            'password' => bcrypt($data['password']),
        ]);
        // 重定向
        return redirect('/');
    }
复制代码


猜你喜欢

转载自blog.csdn.net/gh254172840/article/details/78995809
今日推荐