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

时间:2022-10-19 20:46:53

展示前端界面

首先创建一个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(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);
}

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