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


    展示前端界面

    首先创建一个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代码:

    <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(RequestsUserRegisterRequest $request)
        {
            // 保存用户数据
            // 我们在注册用户时并没有选择头像,这里先给一个默认的头像吧。它的路径在public/images文件夹下
            User::create(array_merge($request->all(), ['avatar'=>'/images/default-avatar.jpeg']));
            // 重定向
            return redirect('/');
        }

    在数据库中查看后发现密码是明文方式展现的,我们进入到User模型中添加一个set方法:

        // password set function
        public function setPasswordAttribute($password)
        {
            $this->attributes['password'] = Hash::make($password);
        }

    之后重新注册用户试试看吧

  • 相关阅读:
    Android+Jquery Mobile学习系列(9)-总结和代码分享
    Android+Jquery Mobile学习系列(8)-保单/生日提醒功能
    Android+Jquery Mobile学习系列(7)-保险人信息
    Android+Jquery Mobile学习系列(6)-个人信息设置
    jquerymobile之collapsible可折叠块标题内容动态显示
    Android+Jquery Mobile学习系列(5)-SQLite数据库
    Android+Jquery Mobile学习系列(4)-页面转场及参数传递
    Android+Jquery Mobile学习系列(3)-创建Android项目
    cmd命令 拷贝某文件夹及其子文件夹文件到其它文件夹
    精简JRE的思路初探
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6660348.html
Copyright © 2020-2023  润新知