Laravel三种方法验证表单数据
关于数据验证,每一个开发者一定会碰到,这篇文章详细记录了验证的步骤,真正的一看懂就懂,就算不懂,跟着操作也能实现。总结了三种常用的验证方法,但是推荐使用第三方法。优点自己去体会吧~~~
方法一、控制器验证
通过 Illuminate\Http\Request 中的validate()方法验证
public function store(Request $request)
{
$validate = $request->validate([
'name' => 'required|max:10',
],[
'name.required' => '文件名必须填写',
'name.max' => '文件名不能超过10个汉字',
]);
}
方法二、手动创建验证器
通过 Illuminate\Support\Facades\Validator 中的make()方法验证
第一步:第一步:控制器编写验证代码
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
public function store(Request $request)
{
// 接收数据
$data = $request->all();
// 错误信息
$messages = [
'name.required' => '文件名必须填写',
'name.max' => '文件名不能超过10个汉字',
];
// make前三个参数:数据,验证规则,错误信息
$validator = Validator::make($data , [
'name' => 'required|max:10',
] , $messages);
// 验证未通过重定向到指定界面,并提示错误信息
if ($validator->fails()) {
return redirect('post') ->withErrors($validator)->withInput();
}
// 验证通过
}
}
第二步:视图显示错误信息
{{-- app/resources/views/index.post.php --}}
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
方法三、表单请求验证(推荐)
第一步:创建验证控制器
php artisan make:request StorePostRequest
该命令会在对应的目录与文件,位置在app/Http/Requests/StorePostRequest.php,文件内容如下
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
public function authorize()
{
return false;
}
public function rules()
{
return [];
}
}
第二步:修改StorePostRequest.php文件
public function authorize()
{
return true;
}
第三步:在该文件中书写验证规则与错误信息
// 验证规则
public function rules()
{
return [
'name' => 'required|max:10'
];
}
// 错误信息:添加messages()方法自定义错误信息
public function messages()
{
return [
'name.required' => '文件名必须填写',
'name.max' => '文件名最大不能超过30个字'
];
}
第四步:控制器中使用
// app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
// 引入验证
use App\Http\Requests\StorePost;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class UserController extends Controller
{
// 通过依赖注入使用验证
// 这样就可以了~~
public function store(StorePost $request)
{
$data = $request->all();
}
}
第五步:视图模板显示错误信息
{{-- app/resources/views/index.blade.php --}}
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
^_^完
我是夕阳何处寻,期待和优秀的你一起同行!
夕阳何处寻
2020年06月03日
请登录后再评论