最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Laravel學習教程之request validation的編寫

 更新時間:2017年10月25日 08:39:29   作者:lx1036  
這篇文章主要給大家介紹了關于Laravel學習教程之request validation編寫的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

本文主要給大家介紹了關于Laravel之request validation編寫的相關內(nèi)容,在用laravel寫api時,當前端傳進來的request是POST/PUT/PATH等method時,那需要做request validation,盡管對于前后端分離程序,前端程序Angular/Vue已經(jīng)做了validation,但是ajax傳過來的json input,在后端也需要做validation。

那該如何優(yōu)雅的編寫request validation呢?laravel官方文檔已經(jīng)包含了這個feature: Form Request Validation

實現(xiàn)方法如下

這里可以寫一個JsonRequest:

class JsonRequest extends Illuminate\Foundation\Http\FormRequest
{
 public function rules()
 {
  $method = $this->method();
  
  assert(in_array($method, [static::METHOD_POST, static::METHOD_PUT, static::METHOD_PATCH], true));
  
  $controller = $this->route()->getController();
  $rules  = $controller::RULES;

  return ($rules[$this->method()] ?? []) + ($rules['*'] ?? []);
 }

 public function authorize()
 {
  return true;
 }
}

這樣就可以在眾多Model Controller里使用JsonRequest就行,如:

use Illuminate\Http\Request;

final class AccountController extends \App\Http\Controllers\Controller
{
 public const RULES = [
  Request::METHOD_POST => [
   'bank_account' => 'required_if:type,bank',
   'loan_account' => 'required_if:type,loan',
  ],
  Request::METHOD_PUT => [
   // ...
  ],
  '*' => [
   // ...
  ],
 ];
}

這樣就可以校驗前端傳進來的json input是否合法。

(1)如果前端傳進來的json input是:

{
 "name": "lx1036",
 "type": "loan",
 "bank_account": {
  "source": "bank",
 }
}

那就validation失敗,不合法。

(2) 如果前端傳進來的json input是:

{
 "name": "lx1036",
 "type": "bank",
 "loan_account": {
  "source": "loan",
 }
}

那就validation失敗,不合法。

這樣就可以校驗json input,不合法就直接彈回throw 一個HttpException,不再用在進入下一步邏輯。對于這樣嵌套的json input,使用request validation來校驗對象間關系很重要,可以看做是進入核心業(yè)務邏輯前的初步校驗。。當然最后寫表時還有model validation,避免壞數(shù)據(jù)進入db。

最后一點,laravel文檔只是說了用法,沒有說明原理。代碼在\Illuminate\Foundation\Providers\FormRequestServiceProvider::class:

 public function boot()
 {
  // \Illuminate\Foundation\Http\FormRequest use 了 ValidatesWhenResolvedTrait,extends 了 \Illuminate\Contracts\Validation\ValidatesWhenResolved
  $this->app->afterResolving(ValidatesWhenResolved::class, function ($resolved) {
   $resolved->validate();
  });

  // ...
 }

所以當從容器中resolve完\Illuminate\Foundation\Http\FormRequest后就會立即執(zhí)行\(zhòng)Illuminate\Foundation\Http\FormRequest::validate()方法,具體不詳述,可看laravel源碼。

OK,總之,在寫程序時,validation很重要,需要去寫,包括request validation和model validation。。。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • php遞歸方法實現(xiàn)無限分類實例代碼

    php遞歸方法實現(xiàn)無限分類實例代碼

    這篇文章主要介紹了php遞歸方法實現(xiàn)無限分類實例代碼,需要的朋友可以參考下
    2014-02-02
  • thinkPHP簡單實現(xiàn)多個子查詢語句的方法

    thinkPHP簡單實現(xiàn)多個子查詢語句的方法

    這篇文章主要介紹了thinkPHP簡單實現(xiàn)多個子查詢語句的方法,結合實例形式對比分析了thinkPHP中子查詢語句的具體實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • Docker搭建自己的PHP開發(fā)環(huán)境

    Docker搭建自己的PHP開發(fā)環(huán)境

    本文給大家介紹的是如何在docker中搭建一個PHP的開發(fā)環(huán)境,將用 zPhal-dockerfiles 做為例子,有需要的小伙伴可以參考下
    2018-02-02
  • 基于laravel Request的所有方法詳解

    基于laravel Request的所有方法詳解

    今天小編就為大家分享一篇基于laravel Request的所有方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 深入理解PHP類的自動載入機制

    深入理解PHP類的自動載入機制

    下面小編就為大家?guī)硪黄钊肜斫釶HP類的自動載入機制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 老生常談PHP面向對象之注冊表模式

    老生常談PHP面向對象之注冊表模式

    下面小編就為大家?guī)硪黄仙U凱HP面向對象之注冊表模式。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Laravel 自定命令以及生成文件的例子

    Laravel 自定命令以及生成文件的例子

    今天小編就為大家分享一篇Laravel 自定命令以及生成文件的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • yii2.0使用Plupload實現(xiàn)帶縮放功能的多圖上傳

    yii2.0使用Plupload實現(xiàn)帶縮放功能的多圖上傳

    這篇文章主要介紹了yii2.0使用Plupload實現(xiàn)帶縮放功能的多圖上傳的相關資料,需要的朋友可以參考下
    2015-12-12
  • php通過各種函數(shù)判斷0和空

    php通過各種函數(shù)判斷0和空

    本文給大家介紹php同各種函數(shù)判斷0和空的方法,在文章給大家補充介紹了php 語法里0不等于null為空的解決辦法,感興趣的朋友跟隨腳本之家小編一起學習
    2018-05-05
  • 如何判斷php mysqli擴展類是否開啟

    如何判斷php mysqli擴展類是否開啟

    php高級版本都支持mysqli擴展類,但是默認情況下,mysqli擴展類是沒有開啟的,本文章向大家介紹php如何判斷mysqli擴展類是否開啟,需要的朋友可以參考一下
    2016-12-12

最新評論

郓城县| 山东省| 韩城市| 文成县| 岱山县| 霍山县| 黑河市| 章丘市| 南召县| 万源市| 安化县| 巴塘县| 石棉县| 青冈县| 贵南县| 佛冈县| 固镇县| 河西区| 巴里| 水城县| 禹城市| 潢川县| 忻州市| 平遥县| 沧源| 五家渠市| 准格尔旗| 华池县| 祁东县| 新平| 邵武市| 四平市| 巨鹿县| 阿图什市| 洛宁县| 阿拉善右旗| 忻州市| 天柱县| 香港 | 时尚| 民丰县|