Laravel学习笔记基础系列--(十七)Laravel 表单数据验证
作者:温新
时间:2021-06-27
在之前的演示中并没有对表单数据进行后端验证,永远不要相信用户的提交的数据。Laravel中提供了很多方法便于我们对数据验证。
本案例基于DemoController
中的demo/test
表单页面进行演示。下面来改造表单。
// demo/test.blade.php
@extends('layouts.layout')
@section('title', '添加用户')
@section('header')
<h3>添加用户</h3>
@endsection
@section('content')
<form action="/demo/store" method="POST">
@csrf
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" name="提交">
</form>
@endsection
视图文件中添加错误信息输出
// demo/test.blade.php
@section('content')
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@endsection
方式一:控制器验证
方法:validate()
public function store(Request $request)
{
$validate = $request->validate([
'username' => 'required',
'password' => 'required|min:6|max:18',
],[
'username.required' => '用户名必须填写',
'password.required' => '密码必须填写',
'password.min' => '密码最低6位',
'password.max' => '密码长度不能超过18位'
]);
}
validate
第一个参数是验证规则,第二个参数是自定义验证规则。默认是英文提示,第二个参数可以自定义为中文提示。
方式二:手动创建验证器验证
通过 Illuminate\Support\Facades\Validator 中的make()方法验证
// DemoController中store方法
use Illuminate\Support\Facades\Validator;
$data = $request->all();
// 错误提示信息
$messages = [
'username.required' => '用户名必须填写',
'password.required' => '密码必须填写',
'password.min' => '密码最低6位',
'password.max' => '密码长度不能超过18位',
];
$validator = Validator::make($data, [
'username' => 'required',
'password' => 'required|min:6|max:18',
], $messages);
// 验证未通过重定向到指定界面,并提示错误信息
if ($validator->fails()) {
return redirect('/demo/test')->withErrors($validator)->withInput();
}
dd($request->all());
方式三:表单请求验证(推荐)
第一步:创建验证控制器
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 [
'username' => 'required',
'password' => 'required|min:6|max:18',
];
}
// 添加messages()方法自定义错误信息
public function messages()
{
return [
'username.required' => '用户名必须填写',
'password.required' => '密码必须填写',
'password.min' => '密码最低6位',
'password.max' => '密码长度不能超过18位',
];
}
第四步:控制器使用
// DemoController.php store方法
use App\Http\Requests\StorePostRequest;
public function store(StorePostRequest $request)
{
dd($request->all());
}
基础操作到这里告一段落了,接下来是数据库相关的操作。
我是温新
每天进步一点点,就一点点
请登录后再评论