国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel 5.5 的自定義驗證對象/類示例代碼詳解

2024-05-04 23:59:53
字體:
來源:轉載
供稿:網友

Laravel 5.5 將提供一個全新的自定義驗證規(guī)則的對象,以作為原來的 Validator::extend 方法的替代。

Laravel 5.5 將提供一個全新的自定義驗證規(guī)則的對象,以作為原來的 Validator::extend 方法的替代。。很多時候我們會直接用正則表達式來處理這種特殊的驗證,也有時候我們會選擇用 Validator::extend 來擴展一個自定義的規(guī)則。但在 Laravel 5.5 版本中,我們有了新的手段,只要定義一個實現(xiàn) Illuminate/Contracts/Validation/Rule 接口的類即可實現(xiàn)自定義的驗證規(guī)則,并可以直接使用。

下面是一個簡單的示例:

use Illuminate/Contracts/Validation/Rule;class IsOddValidationRule implements Rule{  public function passes($attributes, $value)  {    return ($value % 2 !== 0);  }  public function message()  {    return ':attribute 必須是奇數(shù)';  }}

以上代碼定義了一個 IsOddValidationRule 的自定義驗證類,在 Controller 中要使用這個驗證類的話,可以這樣寫:

public function handlForm(Request $request){  $this->validate($request, [    'oddField' => [new IsOddValidationRule]  ]);}

同樣的效果,也可以通過匿名函數(shù)(閉包函數(shù))來實現(xiàn):

public function handleForm(Request $request){  $this->validate($request, [    'oddField' => [function($attributes, $value, $fail) {      if ($value % 2 === 0) {        $fail(':attribute 必須是奇數(shù)!');      }    }]  ]);}

在驗證的表單項為空值或者不存在的時候,對應的自定義驗證規(guī)則不會執(zhí)行。這個與系統(tǒng)自帶的驗證規(guī)則的邏輯是一致的。如果你希望你的自定義驗證規(guī)則,即使是在對應的表單項為空值時也被執(zhí)行的話,那么只要把繼承的接口從 rule 改成 ImplicitRule 即可:

class IsOddValidationRule implements ImplicitRule{  ...}

采用 Laravel 5.5 新增的自定義驗證類,可以更好地管理大量的自定義驗證規(guī)則,而且在 PHPStorm 之類的 IDE 中,從驗證代碼里快速跳轉到對應的驗證類的代碼也會更方便。畢竟采用 Validator::extend 的話,你只能通過搜索對應驗證類名稱的字符串來找到規(guī)則定義的源代碼。

匿名函數(shù)的自定義驗證規(guī)則在一次性的簡單驗證邏輯中用起來確實會很方便,或者是在編碼過程中快速測試驗證邏輯也很實用。但是總的來說,還是建議采用更具組織性和可讀性的自定義驗證類。最佳方法是在編寫 Controller 的過程中用匿名函數(shù)快速驗證自定義規(guī)則,然后再把它移到自定義的驗證類對象中。

你可以查看該功能在 Laravel 框架的 github 上的 Pull Request ,閱讀具體的實現(xiàn)代碼以及相關的測試代碼。

參考

https://github.com/laravel/framework/pull/19155/files
https://laravel-news.com/custom-validation-rule-objects

總結

以上所述是小編給大家介紹的Laravel 5.5 的自定義驗證對象/類示例代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 延安市| 东光县| 措美县| 克拉玛依市| 留坝县| 阳江市| 扶余县| 永嘉县| 奎屯市| 福泉市| 平乡县| 秭归县| 马公市| 行唐县| 逊克县| 日喀则市| 金沙县| 德昌县| 北川| 滨州市| 车致| 建宁县| 吐鲁番市| 盐城市| 上犹县| 自贡市| 高雄县| 行唐县| 蛟河市| 洛阳市| 来安县| 台山市| 旬邑县| 阿拉善右旗| 犍为县| 海安县| 屯昌县| 云林县| 津南区| 南丰县| 保靖县|