以构建用户注册表单resources/views/users/create.blade.php
为例:
<form method="POST" action="{{ route('users.store') }}">
{{ csrf_field() }}
@include('shared._errors')
<div class="form-group">
<label for="name">名称:</label>
<input type="text" name="name" class="form-control" value="{{ old('name') }}">
</div>
<div class="form-group">
<label for="email">邮箱:</label>
<input type="text" name="email" class="form-control" value="{{ old('email') }}">
</div>
<div class="form-group">
<label for="password">密码:</label>
<input type="password" name="password" class="form-control" value="{{ old('password') }}">
</div>
<div class="form-group">
<label for="password_confirmation">确认密码:</label>
<input type="password" name="password_confirmation" class="form-control" value="{{ old('password_confirmation') }}">
</div>
<button type="submit" class="btn btn-primary">注册</button>
</form>
csrf验证
表单中添加{{ csrf_field() }}
函数生成:
<input type="hidden" name="_token" value="fhcxqT67dNowMoWsAHGGPJOAWJn8x5R5ctSwZrAq">
用于生成token防止 CSRF(跨站请求伪造)的攻击
不加验证的情况下,提交表单会报419错误:
419错误old全局函数
Laravel 提供了全局辅助函数 old 来帮助我们在 Blade 模板中显示旧输入数据。这样当我们信息填写错误,页面进行重定向访问时,输入框将自动填写上最后一次输入过的数据
表单规则验证
表单数据提交到app/Http/Controllers/UsersController.php
的store
方法
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:50',
'email' => 'required|email|unique:users|max:255',
'password' => 'required|confirmed|min:6'
]);
# ...
}
规则验证语言包
添加语言包 overtrue/laravel-lang
$ composer require "overtrue/laravel-lang:~3.0"
-
将
config/app.php
的Illuminate\Translation\TranslationServiceProvider::class,
替换为Overtrue\LaravelLang\TranslationServiceProvider::class,
-
修改
config/app.php
语言'locale' => 'zh-CN',
显示验证结果
Laravel 默认会将所有的验证错误信息进行闪存。当检测到错误存在时,Laravel 会自动将这些错误消息绑定到视图上,因此我们可以在所有的视图上使用 errors 变量来显示错误信息。需要注意的是,在我们对 errors 进行使用时,要先使用 count($errors) 检查其值是否为空。
创建错误信息视图 resources/views/shared/_errors.blade.php
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
网友评论