laravel 自动验证,提示验证成功,失败信息,引入语言包
JavaScript也可以進(jìn)行一些驗(yàn)證操作,但是有些情況下不好用(禁用JavaScript)。這時(shí)候就要使用后端的一些機(jī)制。能夠在后端對(duì)用戶(hù)提交的數(shù)據(jù)進(jìn)行驗(yàn)證,這個(gè)就是后端的自動(dòng)驗(yàn)證。
案例:編寫(xiě)自動(dòng)驗(yàn)證實(shí)例
使用biaodan表單頁(yè)面,提交到testbiaodan路由
先創(chuàng)建兩個(gè)路由:
Route::get('biaodan','TestController@biaodan'); Route::post('testbiaodan','TestController@testbiaodan')->name('tb');編寫(xiě)控制器方法:
// 使用biaodan表單頁(yè)面,提交到testbiaodan來(lái)進(jìn)行自動(dòng)驗(yàn)證 public function biaodan(){return view('biaodan'); } //用來(lái)自動(dòng)驗(yàn)證 public function testbiaodan(Request $request){ /* 1,自動(dòng)驗(yàn)證 2,獲取數(shù)據(jù) 3,根據(jù)寫(xiě)入的結(jié)果進(jìn)行不同的響應(yīng)*/ $this->validate($request,[ //對(duì)于不同的的規(guī)則,用|分隔開(kāi)'id' => 'required|min:2|max:6','name' => 'required|min:2|max:255|string',// integer在設(shè)定的0-100范圍內(nèi),寫(xiě)不寫(xiě)效果一樣,不寫(xiě)integer的話(huà),當(dāng)要驗(yàn)證的信息的超過(guò)設(shè)定的0-100,將驗(yàn)證失敗'age' => 'required|integer|min:0|max:100','email' => 'required|email']);// 驗(yàn)證成功后提示信息echo '驗(yàn)證成功'; }創(chuàng)建biaodan視圖文件,提交地址為testbiaodan
<form action="{{route('tb')}}" method="post"><input type="text" name="id" placeholder="學(xué)號(hào)"/><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>驗(yàn)證規(guī)則大全
array
該字段必須是PHP數(shù)組
before:date
驗(yàn)證字段必須是指定日期之前的一個(gè)數(shù)值,該日期將會(huì)傳遞給PHP strtotime函數(shù)。
between:min,max
驗(yàn)證字段尺寸在給定的最小值和最大值之間,字符串、數(shù)值和文件都可以使用該規(guī)則
boolean
驗(yàn)證字段必須可以被轉(zhuǎn)化為boolean,接收true, false, 1,0, “1”, 和 "0"等輸入。
confirmed
驗(yàn)證字段必須有一個(gè)匹配字段foo_confirmation,例如,如果驗(yàn)證字段是password,必須輸入一個(gè)與之匹配的password_confirmation字段
date
驗(yàn)證字段必須是一個(gè)基于PHP strtotime函數(shù)的有效日期
date_format:format
驗(yàn)證字段必須匹配指定格式,該格式將使用PHP函數(shù)date_parse_from_format進(jìn)行驗(yàn)證。你應(yīng)該在驗(yàn)證字段時(shí)使用date或date_format
different:field
驗(yàn)證字段必須是一個(gè)和指定字段不同的值
digits:value
驗(yàn)證字段必須是數(shù)字且長(zhǎng)度為value指定的值
digits_between:min,max
驗(yàn)證字段數(shù)值長(zhǎng)度必須介于最小值和最大值之間
distinct
處理數(shù)組時(shí),驗(yàn)證字段不能包含重復(fù)值:
email
驗(yàn)證字段必須是格式化的電子郵件地址
exists:table,column
驗(yàn)證字段必須存在于指定數(shù)據(jù)表
基本使用:
file
該驗(yàn)證字段必須是上傳成功的文件
filled
該驗(yàn)證字段如果存在則不能為空
image
驗(yàn)證文件必須是圖片(jpeg、png、bmp、gif或者svg)
in:foo,bar…
驗(yàn)證字段值必須在給定的列表中
in_array:另一個(gè)字段
驗(yàn)證字段必須在另一個(gè)字段中存在
integer
驗(yàn)證字段必須是整型
ip
驗(yàn)證字段必須是IP地址
JSON
驗(yàn)證字段必須是有效的JSON字符串
max:value
驗(yàn)證字段必須小于等于最大值,和字符串、數(shù)值、文件字段的size規(guī)則一起使用
min:value
驗(yàn)證字段的最小值,對(duì)字符串、數(shù)值、文件字段而言,和size規(guī)則使用方式一致。
nullable
驗(yàn)證字段必須為null,這在驗(yàn)證一些可以為null的原生數(shù)據(jù)如整型或字符串時(shí)很有用。
numeric
驗(yàn)證字段必須是數(shù)值 (包括正數(shù),負(fù)數(shù))
present
驗(yàn)證字段必須出現(xiàn)在輸入數(shù)據(jù)中但可以為空。
regex:pattern
驗(yàn)證字段必須匹配給定正則表達(dá)式
required
輸入字段值不能為空,以下情況字段值都為空:
required_unless:anotherfield,value,…
除了 anotherfield 字段等于value,驗(yàn)證字段不能空
required_with:foo,bar,…
驗(yàn)證字段只有在任一其它指定字段存在的話(huà)才是必須的
required_with_all:foo,bar,…
驗(yàn)證字段只有在所有指定字段存在的情況下才是必須的
required_without:foo,bar,…
驗(yàn)證字段只有當(dāng)任一指定字段不存在的情況下才是必須的
required_without_all:foo,bar,…
驗(yàn)證字段只有當(dāng)所有指定字段不存在的情況下才是必須的
same:field
給定字段和驗(yàn)證字段必須匹配
size:value
驗(yàn)證字段必須有和給定值value相匹配的尺寸,對(duì)字符串而言,value是相應(yīng)的字符數(shù)目;對(duì)數(shù)值而言,value是給定整型值;對(duì)文件而言,value是相應(yīng)的文件字節(jié)數(shù)
string
驗(yàn)證字段必須是字符串
驗(yàn)證成功提示信息
在TestController.php定義的用來(lái)驗(yàn)證的方法里,添加echo " 內(nèi)容"輸出信息。。
如果表單頁(yè)面驗(yàn)證成功就會(huì)顯示輸出成功信息。
顯示驗(yàn)證錯(cuò)誤信息提示(英文提示,中文提示)
一,英文提示(默認(rèn))
在表單視圖文件里,加入下面這些判斷錯(cuò)誤信息,$errors變量用來(lái)提取錯(cuò)誤信息。
@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="學(xué)號(hào)"/><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"/><!-- ********************************************************************************* --><!-- 判斷驗(yàn)證錯(cuò)誤信息,輸出的錯(cuò)誤信息是英文,需要翻譯成中文 --><!-- 如果錯(cuò)誤信息的數(shù)量大于0 --><!-- 遍歷錯(cuò)誤,輸出錯(cuò)誤信息 -->@if (count($errors) > 0)@foreach ($errors->all() as $error)<li>{{ $error }}</li>@endforeach@endif</form></body></html>現(xiàn)在如果驗(yàn)證失敗,就會(huì)有提示以下信息
二,中文提示,(自定義錯(cuò)誤提示,語(yǔ)言包)
1,自定義驗(yàn)證錯(cuò)誤提示:
在驗(yàn)證信息的TestController里定義的方法里,validate的第三個(gè)參數(shù)用來(lái)定自定義錯(cuò)誤信息提示,
第三參數(shù),自定義錯(cuò)誤信息
驗(yàn)證錯(cuò)誤后的提示信息
鍵對(duì)應(yīng)驗(yàn)證信息的表單的name屬性值+判斷信息,值是錯(cuò)誤提示信息
’name.required’=>‘用戶(hù)名不能為空’,
現(xiàn)在我們給name的required設(shè)置了用戶(hù)名不能為空。如果用戶(hù)名表單那里沒(méi)有輸入內(nèi)容直接提交后,會(huì)提示
驗(yàn)證失敗后會(huì)提示如下信息:
看提示信息會(huì)發(fā)現(xiàn),自定義的會(huì)是中文,不自定義的還是英文。要想全部提示中文,還得一個(gè)個(gè)給他設(shè)置錯(cuò)誤提示,比較麻煩,繁瑣,寫(xiě)起來(lái)也不方便。那樣就可以通過(guò)下載的中文語(yǔ)言包來(lái)顯示中文提示信息。
2,下載中文語(yǔ)言包來(lái),顯示中文提示信息。
在自己的larave項(xiàng)目的目錄下面,按住shift鍵+鼠標(biāo)右擊,打開(kāi)命令行窗口。
輸入php artisan 來(lái)查看自己的laravel的版本,比如我的就是,7.1.3
下一步就是下載語(yǔ)言包,打開(kāi)網(wǎng)址查看一下,下載語(yǔ)言包的命令,下載語(yǔ)言包的網(wǎng)址
比如我的就是7.1.3版本的就用composer require caouecs/laravel-lang:~6.0命令來(lái)下載
在文件下打開(kāi)命令行輸入composer require caouecs/laravel-lang:~6.0開(kāi)始下載,
提示下載完成之后,打開(kāi)laravel文件的,目錄,。D:\laraveldemo\one\vendor\caouecs\laravel-lang\src\zh-CN
下載后的目錄在自己laravel項(xiàng)目下的vendor\caouecs\laravel-lang\src\zh-CN下
復(fù)制zh-CN文件到resources/lang下:
**修改配置:**在config/app.php文件進(jìn)行修改。
現(xiàn)在就可以測(cè)試下語(yǔ)言包能不能使用。 刪除剛才自定義錯(cuò)誤信息的語(yǔ)句(validate的第三個(gè)參數(shù))
測(cè)試:
在表單里什么都不輸入信息,進(jìn)行驗(yàn)證,提示語(yǔ)言都變成了中文。
也可以給語(yǔ)言包里自定義提示信息:
D:\laraveldemo\one\resources\lang\zh-CN\validation.php里添加提示信息
id是要判斷的表單的name屬性值,也是TestController.php里面的id表單判斷的鍵名(總之,這幾個(gè)字段得保持一致)
現(xiàn)在就是提示編號(hào)不能為空了
總結(jié)
以上是生活随笔為你收集整理的laravel 自动验证,提示验证成功,失败信息,引入语言包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 响铃:爆雷=靴子落地,P2P或不再负重前
- 下一篇: 小米android手机密码忘了怎么解锁,