展示前端界面
首先创建一个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(Requests\UserRegisterRequest $request) { // 保存用户数据 // 我们在注册用户时并没有选择头像,这里先给一个默认的头像吧。它的路径在public/images文件夹下
User::create([ 'name' => $data['name'], 'email' => $data['email'], 'avatar' => '/images/default-avatar.jpeg', 'password' => bcrypt($data['password']), ]); // 重定向 return redirect('/'); }