laravel 自动验证,提示验证成功,失败信息,引入语言包

JavaScript也可以进行一些验证操作,但是有些情况下不好用(禁用JavaScript)。这时候就要使用后端的一些机制。能够在后端对用户提交的数据进行验证,这个就是后端的自动验证。


案例:编写自动验证实例


使用biaodan表单页面,提交到testbiaodan路由

先创建两个路由:

Route::get('biaodan','TestController@biaodan');
Route::post('testbiaodan','TestController@testbiaodan')->name('tb');

编写控制器方法:

// 使用biaodan表单页面,提交到testbiaodan来进行自动验证
public function biaodan(){
    return view('biaodan');
}
//用来自动验证
public function testbiaodan(Request $request){
/*
1,自动验证
2,获取数据
3,根据写入的结果进行不同的响应

*/
$this->validate($request,[
//对于不同的的规则,用|分隔开
       'id' => 'required|min:2|max:6',
        'name' => 'required|min:2|max:255|string',
        // integer在设定的0-100范围内,写不写效果一样,不写integer的话,当要验证的信息的超过设定的0-100,将验证失败
        'age' => 'required|integer|min:0|max:100',
        'email' => 'required|email'
    ]);
 // 验证成功后提示信息
    echo '验证成功';
}

创建biaodan视图文件,提交地址为testbiaodan

<form action="{{route('tb')}}" method="post">
       <input type="text" name="id" placeholder="学号"/>
       <br />
       <input type="text" name="name" placeholder="姓名"/>
       <br />
       <input type="text" name="age" placeholder="年龄"/>
       <br />
       <input type="text" name="email" placeholder="邮箱"/>
       <br />
       <!-- 下面两种方式都可使用 -->
       <!-- <input type="hidden" name="_token" value="{{csrf_token()}}"/> -->
       {{csrf_field()}}
       <input type="submit"/>
   </form>

验证规则大全


array
该字段必须是PHP数组

before:date
验证字段必须是指定日期之前的一个数值,该日期将会传递给PHP strtotime函数。

between:min,max
验证字段尺寸在给定的最小值和最大值之间,字符串、数值和文件都可以使用该规则

boolean
验证字段必须可以被转化为boolean,接收true, false, 1,0, “1”, 和 "0"等输入。

confirmed
验证字段必须有一个匹配字段foo_confirmation,例如,如果验证字段是password,必须输入一个与之匹配的password_confirmation字段

date
验证字段必须是一个基于PHP strtotime函数的有效日期

date_format:format
验证字段必须匹配指定格式,该格式将使用PHP函数date_parse_from_format进行验证。你应该在验证字段时使用date或date_format

different:field
验证字段必须是一个和指定字段不同的值

digits:value
验证字段必须是数字且长度为value指定的值

digits_between:min,max
验证字段数值长度必须介于最小值和最大值之间

distinct
处理数组时,验证字段不能包含重复值:

email
验证字段必须是格式化的电子邮件地址

exists:table,column
验证字段必须存在于指定数据表

基本使用

file
该验证字段必须是上传成功的文件

filled
该验证字段如果存在则不能为空

image
验证文件必须是图片(jpeg、png、bmp、gif或者svg)

in:foo,bar…
验证字段值必须在给定的列表中

in_array:另一个字段
验证字段必须在另一个字段中存在

integer
验证字段必须是整型

ip
验证字段必须是IP地址

JSON
验证字段必须是有效的JSON字符串

max:value
验证字段必须小于等于最大值,和字符串、数值、文件字段的size规则一起使用

min:value
验证字段的最小值,对字符串、数值、文件字段而言,和size规则使用方式一致。

nullable
验证字段必须为null,这在验证一些可以为null的原生数据如整型或字符串时很有用。

numeric
验证字段必须是数值 (包括正数,负数)

present
验证字段必须出现在输入数据中但可以为空。

regex:pattern
验证字段必须匹配给定正则表达式

required
输入字段值不能为空,以下情况字段值都为空:

required_unless:anotherfield,value,…
除了 anotherfield 字段等于value,验证字段不能空

required_with:foo,bar,…
验证字段只有在任一其它指定字段存在的话才是必须的

required_with_all:foo,bar,…
验证字段只有在所有指定字段存在的情况下才是必须的

required_without:foo,bar,…
验证字段只有当任一指定字段不存在的情况下才是必须的

required_without_all:foo,bar,…
验证字段只有当所有指定字段不存在的情况下才是必须的

same:field
给定字段和验证字段必须匹配

size:value
验证字段必须有和给定值value相匹配的尺寸,对字符串而言,value是相应的字符数目;对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数

string
验证字段必须是字符串


验证成功提示信息


在TestController.php定义的用来验证的方法里,添加echo " 内容"输出信息。。
如果表单页面验证成功就会显示输出成功信息。

//用来自动验证
public function testbiaodan(Request $request){
 $this->validate($request,[
        'name' => 'required|min:2|max:255',
	   'age' => 'required|integer|min:0|max:100',
        'email' => 'required|email'
    ]);
    // 验证成功后提示信息
    echo '验证成功';
}


显示验证错误信息提示(英文提示,中文提示)


一,英文提示(默认)

在表单视图文件里,加入下面这些判断错误信息,$errors变量用来提取错误信息。

  @if (count($errors) > 0)
		   @foreach ($errors->all() as $error)
			   <li>{{ $error }}</li>
		   @endforeach
	   @endif

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title></title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <style>

        </style>
    </head>
    <body>
   <form action="{{route('tb')}}" method="post">
       <input type="text" name="id" placeholder="学号"/>
       <br />
       <input type="text" name="name" placeholder="姓名"/>
       <br />
       <input type="text" name="age" placeholder="年龄"/>
       <br />
       <input type="text" name="email" placeholder="邮箱"/>
       <br />
       <!-- 下面两种方式都可使用 -->
       <!-- <input type="hidden" name="_token" value="{{csrf_token()}}"/> -->
       {{csrf_field()}}
       <input type="submit"/>

<!-- ********************************************************************************* -->
	   <!-- 判断验证错误信息,输出的错误信息是英文,需要翻译成中文 -->
       <!-- 如果错误信息的数量大于0 -->
       <!-- 遍历错误,输出错误信息 -->
	  @if (count($errors) > 0)
		   @foreach ($errors->all() as $error)
			   <li>{{ $error }}</li>
		   @endforeach
	   @endif
   </form>
   </body>

</html>

现在如果验证失败,就会有提示以下信息
在这里插入图片描述

二,中文提示,(自定义错误提示,语言包)

1,自定义验证错误提示:
在验证信息的TestController里定义的方法里,validate的第三个参数用来定自定义错误信息提示,
第三参数,自定义错误信息
验证错误后的提示信息
键对应验证信息的表单的name属性值+判断信息,值是错误提示信息
’name.required’=>‘用户名不能为空’,

//用来自动验证
public function testbiaodan(Request $request){
 $this->validate($request,[
        'id' => 'required|min:2|max:6',
        'name' => 'required|min:2|max:255',
        // integer在设定的0-100范围内,写不写效果一样,不写integer的话,当要验证的信息的超过设定的0-100,将验证失败
        'age' => 'required|integer|min:0|max:100',
        'email' => 'required|email'
    ],[
        // 第三参数,自定义错误信息
        // 验证错误后的提示信息
        // 键对应验证信息的name,加判断信息,值是错误提示信息
        'name.required'=>'用户名不能为空',
        'name.min'=>'用户名最少为2个字符',
        'name.max'=>'用户名最少为2个字符',
    ]

    );
    // 验证成功后提示信息
    echo '验证成功';
}

现在我们给name的required设置了用户名不能为空。如果用户名表单那里没有输入内容直接提交后,会提示
验证失败后会提示如下信息:
在这里插入图片描述
看提示信息会发现,自定义的会是中文,不自定义的还是英文。要想全部提示中文,还得一个个给他设置错误提示,比较麻烦,繁琐,写起来也不方便。那样就可以通过下载的中文语言包来显示中文提示信息。

2,下载中文语言包来,显示中文提示信息。
在自己的larave项目的目录下面,按住shift键+鼠标右击,打开命令行窗口。
输入php artisan 来查看自己的laravel的版本,比如我的就是,7.1.3
在这里插入图片描述
下一步就是下载语言包,打开网址查看一下,下载语言包的命令,下载语言包的网址
比如我的就是7.1.3版本的就用composer require caouecs/laravel-lang:~6.0命令来下载
在这里插入图片描述
在文件下打开命令行输入composer require caouecs/laravel-lang:~6.0开始下载,
在这里插入图片描述
提示下载完成之后,打开laravel文件的,目录,。D:\laraveldemo\one\vendor\caouecs\laravel-lang\src\zh-CN
下载后的目录在自己laravel项目下的vendor\caouecs\laravel-lang\src\zh-CN下
复制zh-CN文件到resources/lang下:

在这里插入图片描述
**修改配置:**在config/app.php文件进行修改。
在这里插入图片描述
现在就可以测试下语言包能不能使用。 删除刚才自定义错误信息的语句(validate的第三个参数)
测试:
在表单里什么都不输入信息,进行验证,提示语言都变成了中文。
在这里插入图片描述
也可以给语言包里自定义提示信息:
D:\laraveldemo\one\resources\lang\zh-CN\validation.php里添加提示信息
id是要判断的表单的name属性值,也是TestController.php里面的id表单判断的键名(总之,这几个字段得保持一致)
在这里插入图片描述
现在就是提示编号不能为空了
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 中进行邮箱验证可以通过以下步骤实现: 1. 在控制器中定义验证规则: ```php $rules = [ 'email' => 'required|email|unique:users,email', ]; ``` 2. 在控制器中引入 Validator 并使用 validate 方法进行验证: ```php use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return redirect()->back()->withErrors($validator); } // 验证通过,继续执行其他操作 ``` 3. 在表单中添加邮箱输入框并设置 name 属性为 email: ```html <form action="/register" method="POST"> @csrf <label for="email">邮箱</label> <input type="email" name="email" id="email"> <button type="submit">注册</button> </form> ``` 4. 在邮箱验证邮件中添加验证链接并发送给用户: ```php use Illuminate\Support\Facades\Mail; use App\Mail\VerificationEmail; Mail::to($user->email) ->send(new VerificationEmail($user->verification_token)); ``` 5. 创建 VerificationEmail 类并定义邮件内容及验证链接: ```php use Illuminate\Mail\Mailable; class VerificationEmail extends Mailable { public $verificationToken; public function __construct(string $verificationToken) { $this->verificationToken = $verificationToken; } public function build() { $url = route('verify-email', $this->verificationToken); return $this->view('emails.verification', ['url' => $url]); } } ``` 6. 创建邮箱验证路由并处理验证逻辑: ```php use App\Models\User; Route::get('/verify-email/{token}', function ($token) { $user = User::where('verification_token', $token)->first(); if (!$user) { abort(404); } $user->update(['verification_token' => null]); return view('emails.verification-success'); })->name('verify-email'); ``` 以上就是 Laravel 中进行邮箱验证的基本步骤,具体实现可能会有所不同,但大致思路是相似的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值