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 " 內容"輸出信息。。
如果表單頁面驗證成功就會顯示輸出成功信息。
顯示驗證錯誤信息提示(英文提示,中文提示)
一,英文提示(默認)
在表單視圖文件里,加入下面這些判斷錯誤信息,$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’=>‘用戶名不能為空’,
現在我們給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表單判斷的鍵名(總之,這幾個字段得保持一致)
現在就是提示編號不能為空了
總結
以上是生活随笔為你收集整理的laravel 自动验证,提示验证成功,失败信息,引入语言包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 响铃:爆雷=靴子落地,P2P或不再负重前
- 下一篇: 小米android手机密码忘了怎么解锁,