Laravel5.6的表单验证器使用
首选要有个页面:
使用bootstrap和jquery
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="/css/bootstrap.css">
<link rel="stylesheet" href="/css/bootstrap-theme.css">
<title>添加用户</title>
</head>
<body>
<br>
<div class="container">
@if($errors->all())
<div class="panel panel-danger">
<div class="panel-heading">
<ul>
@foreach($errors->all() as $error)
<li>
{{$error}}
</li>
@endforeach
</ul>
</div>
</div>
@endif
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">添加用户</h3>
</div>
<div class="panel-body">
<form action="{{route('user.adduser')}}" method="post" class="form-horizontal" role="form">
{{-- csrf验证--}}
{{csrf_field()}}
<div class="form-group">
<label class="col-sm-2 control-label">用户名</label>
<div class="col-sm-10">
<input type="text" name="username" class="form-control" value="{{old('username')}}" title="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">密码</label>
<div class="col-sm-10">
<input type="text" name="password" class="form-control" value="" title="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">重复密码</label>
<div class="col-sm-10">
<input type="text" name="password_confirmation" class="form-control" value="" title="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">邮箱</label>
<div class="col-sm-10">
<input type="text" name="email" class="form-control" value="{{old('email')}}" title="">
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
<script src="/js/bootstrap.js"></script>
<script src="/js/jquery.js"></script>
</html>
一、用控制器中的$this->validate方式去验证表单
创建路由
/*
*添加 用户
*/
//显示
Route::get('adduser','UserController@index')->name('user.adduser');
//添加操作
Route::post('adduser','UserController@addSave')->name('user.adduser');
创建控制器
php artisan make:controller UserController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\UserRequest;
class UserController extends Controller
{
//显示用户
public function index()
{
return view('user.index');
}
// 添加用户
public function addSave( Request $request)
{
$input = $this->validate($request,[
//验证规则
// 验证字段 => 验证规则 多个规则用 | 隔开
'username' => 'required',
// comfirmed 必须要在第一次输入密码中
'password' => 'required|between:2,8|confirmed',
// 确认密码字段的格式必须是 密码字段_confirmation
'password_confirmation' => 'required',
'email' => 'required|email'
],[
//汉字提示,默认英文,可选
// 验证字段.验证规则 => 所提示的汉字
'username.required' => '用户名不能为空!',
'password.required' => '密码不能为空!',
'password.between' =>'密码需要在2到8位之间',
'password.confirmed'=> '两次密码不一致',
'password_confirmation.required' => '确认密码不能为空!',
'email.required' => '邮箱不能为空!',
'email.email' => '邮箱格式不正确!'
]);
dd($request->all());
}
}
二、独立方式去验证表单
创建控制器
php artisan make:controller UserController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use App\Http\Requests\UserRequest;
class UserController extends Controller
{
//显示用户
public function index()
{
return view('user.index');
}
// 添加用户
public function addSave(Request $request)
{
$validate = Validator::make($request->all(),[
//验证规则
// 验证字段 => 验证规则 多个规则用 | 隔开
'username' => 'required',
// comfirmed 必须要在第一次输入密码中
'password' => 'required|between:2,8|confirmed',
// 确认密码字段的格式必须是 密码字段_confirmation
'password_confirmation' => 'required',
'email' => 'required|email'
],[
//汉字提示,默认英文,可选
// 验证字段.验证规则 => 所提示的汉字
'username.required' => '用户名不能为空!',
'password.required' => '密码不能为空!',
'password.between' =>'密码需要在2到8位之间',
'password.confirmed'=> '两次密码不一致',
'password_confirmation.required' => '确认密码不能为空!',
'email.required' => '邮箱不能为空!',
'email.email' => '邮箱格式不正确!'
]);
if(validate->fails()){
return redirect()->black()->withErrors($validate);
}
}
}
三、验证器
创建验证器
php artisan make:request UserRequest
在验证器里写验证规则
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserRequest extends FormRequest
{
/**
* 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 [
//验证规则
// 验证字段 => 验证规则 多个规则用 | 隔开
'username' => 'required',
// comfirmed 必须要在第一次输入密码中
'password' => 'required|between:2,8|confirmed',
// 确认密码字段的格式必须是 密码字段_confirmation
'password_confirmation' => 'required',
'email' => 'required|email'
];
}
//自定义提示
public function messages()
{
return [
//汉字提示,默认英文,可选
// 验证字段.验证规则 => 所提示的汉字
'username.required' => '用户名不能为空!',
'password.required' => '密码不能为空!',
'password.between' =>'密码需要在2到8位之间',
'password.confirmed'=> '两次密码不一致',
'password_confirmation.required' => '确认密码不能为空!',
'email.required' => '邮箱不能为空!',
'email.email' => '邮箱格式不正确!'
];
}
}
在控制器中使用,如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\UserRequest;
class UserController extends Controller
{
//显示用户
public function index()
{
return view('user.index');
}
// 添加用户
public function addSave(UserRequest $request)
{
dd($request->all());
}
}
效果如下: