婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > yii2 在控制器中驗證請求參數的使用方法

yii2 在控制器中驗證請求參數的使用方法

熱門標簽:百度地圖怎樣標注圖標 咸寧銷售電銷機器人系統 400電話蘭州申請請 開發地圖標注類網站 電銷機器人問門薩維品牌my 余姚電話機器人 外呼系統能給企業帶來哪些好處 百度地圖標注偏差 廣東廣州在怎么申請400電話

寫api接口時一般會在控制器中簡單驗證參數的正確性。

使用yii只帶驗證器(因為比較熟悉)實現有兩種方式(效果都不佳)。

針對每個請求單獨寫個 Model , 定義驗證規則并進行驗證。 缺點:寫好多參數驗證的 Model 類。

使用 獨立驗證器 中提到的 $validator->validateValue() 方法直接驗證變量值。缺點:寫實例化很多驗證器對象。
有么有“一勞永逸”的做法,像在 Model 中通過 rules 方法定義驗證規則并實現快速驗證的呢?有!

使用方法(實現效果)

namespace frontend\controllers\api;
use yii\web\Controller;
use common\services\app\ParamsValidateService;
class ArticleController extends Controller
{
  // 文章列表
  public function actionList()
  {
    $PVS = new ParamsValidateService();
    $valid = $PVS->validate(\Yii::$app->request->get(), [
      ['category_id', 'required'],
      ['category_id', 'integer'],
      ['keyword', 'string'],
    ]);
    if (!$valid) {
      $this->apiError(1001, $PVS->getErrorSummary(true));
    }
    //...
  }
  // 新增文章
  public function actionPost()
  {
    $PVS = new ParamsValidateService();
    $valid = $PVS->validate(\Yii::$app->request->get(), [
      [['category_id', 'title', 'content'], 'required'],
      ['category_id', 'integer'],
      [['title'], 'string', 'max' => 64],
      [['content'], 'string'],
    ]);
    if (!$valid) {
      $this->apiError(1001, $PVS->getErrorSummary(true));
    }
    //...
  }
  // 文章刪除
  public function actionDelete()
  {
    $PVS = new ParamsValidateService();
    $valid = $PVS->validate(\Yii::$app->request->get(), [
      ['article_id', 'required'],
      ['article_id', 'integer'],
    ]);
    if (!$valid) {
      $this->apiError(1001, $PVS->getErrorSummary(true));
    }
    //...
  }
}

實現方法

定義參數驗證模型

定義參數驗證模型 ParamsValidateModel ,繼承 yii\db\ActiveRecord ,重寫 attributes() 方法,主要功能:

  • 驗證規則可從對象外部進行設置。
  • 從驗證規則中獲取可賦值的屬性。
?php
namespace common\models\app;
use yii\db\ActiveRecord;
class ParamsValidateModel extends ActiveRecord
{
  /**
   * @var array 驗證規則
   */
  private $_rules = [];
  private $_attributes = [];
  // 設置驗證規則
  public function setRules($rules)
  {
    $this->_rules = $rules;
    foreach ($rules as $item) {
      $this->_attributes = array_unique(array_merge($this->_attributes, (array)$item[0]));
    }
  }
  // 重寫獲取驗證規則
  public function rules()
  {
    return $this->_rules;
  }
  // 設置可用屬性列表
  public function attributes()
  {
    return $this->_attributes;
  }
}

定義參數驗證服務類

定義參數驗證服務類,主要功能有:

  • 設置參數列表和參數規則列表。
  • 使用 參數驗證模型 進行驗證和存儲驗證錯誤消息。
  • 使用魔術方法獲取 參數驗證模型 中的驗證錯誤消息。
?php
namespace common\services\app;
use common\models\app\ParamsValidateModel;
use yii\base\Component;
/**
 * Class ParamsValidateService
 * @package common\services\app
 * @method array getErrors(\string $attribute)
 * @method array getFirstErrors()
 * @method array getFirstError(\string $attribute)
 * @method array getErrorSummary(\boolean $showAllErrors)
 */
class ParamsValidateService extends Component
{
  /**
   * @var ParamsValidateModel 模型
   */
  private $model = null;
  public function init()
  {
    parent::init();
    $this->model = new ParamsValidateModel();
  }
  /**
   * @param array $data 數據項
   * @param array $rules 驗證規則
   * @return bool
   */
  public function validate($data, $rules)
  {
    // 添加驗證規則
    $this->model->setRules($rules);
    // 設置參數
    $this->model->load($data, '');
    // 進行驗證
    return $this->model->validate();
  }
  public function __call($name, $params)
  {
    if ($this->model->hasMethod($name)) {
      return call_user_func_array([$this->model, $name], $params);
    } else {
      return parent::__call($name, $params);
    }
  }
}

總結

以上所述是小編給大家介紹的yii2 在控制器中驗證請求參數的使用方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • Yii2設置默認控制器的兩種方法
  • Yii2創建控制器(createController)方法詳解
  • yii2控制器Controller Ajax操作示例
  • Yii2使用$this->context獲取當前的Module、Controller(控制器)、Action等
  • Yii2框架控制器、路由、Url生成操作示例
  • Yii控制器中filter過濾器用法分析
  • Yii 框架控制器創建使用及控制器響應操作示例
  • PHP 基于Yii框架中使用smarty模板的方法詳解
  • 在Yii框架中使用PHP模板引擎Twig的例子
  • yii框架創建與設置默認控制器并載入模板操作示例

標簽:十堰 臨沂 銅陵 巴彥淖爾 衡陽 重慶 麗江 鷹潭

巨人網絡通訊聲明:本文標題《yii2 在控制器中驗證請求參數的使用方法》,本文關鍵詞  yii2,在,控制器,中,驗證,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《yii2 在控制器中驗證請求參數的使用方法》相關的同類信息!
  • 本頁收集關于yii2 在控制器中驗證請求參數的使用方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久久久夜精品精品免费| 国产成人精品网址| 亚洲aaa精品| 99re这里都是精品| 久久精品一区二区| 精品一区二区三区不卡| 日韩精品在线一区二区| 天堂va蜜桃一区二区三区漫画版| 午夜久久电影网| 国产精品久久久久久久久久免费看 | 91麻豆免费视频| 一区二区三区日韩欧美精品| 久久se精品一区精品二区| 欧美一区二区三区视频在线 | 99精品国产视频| 欧美激情一区三区| 欧美日韩亚洲综合| 91视频国产资源| 国产在线视频一区二区三区| 成人欧美一区二区三区黑人麻豆| 国产精品综合视频| 欧美一区二区播放| 国产女人aaa级久久久级| 日本成人在线不卡视频| 久久久精品免费观看| 欧美日韩电影在线播放| 色综合网站在线| 日韩欧美在线网站| 亚洲大尺度视频在线观看| 欧美一区二区视频在线观看2020 | 中文一区二区完整视频在线观看| 亚洲欧洲日产国码二区| 97久久超碰国产精品电影| 国产欧美综合在线观看第十页| 日韩激情视频网站| 日韩精品一区二| 国产999精品久久| 一区二区三区四区视频精品免费 | 久久午夜电影网| 国产精品99久久久久久宅男| 精品入口麻豆88视频| 日韩亚洲国产中文字幕欧美| av一区二区不卡| 亚洲成年人网站在线观看| 日韩午夜av一区| 91麻豆国产精品久久| 日韩高清不卡在线| 国产欧美一区二区精品婷婷| 成人精品小蝌蚪| 精品写真视频在线观看| 亚洲免费在线电影| 国产成人自拍在线| 亚洲v日本v欧美v久久精品| 一本一本久久a久久精品综合麻豆| 亚洲精品成人悠悠色影视| 国产剧情一区二区三区| 欧美国产一区在线| 欧美精品色一区二区三区| 黄色日韩三级电影| 国产精品久久久久aaaa樱花 | 欧美成人精品福利| 懂色av噜噜一区二区三区av| 国产偷v国产偷v亚洲高清| 99久久久久免费精品国产| 午夜欧美一区二区三区在线播放| 国产美女娇喘av呻吟久久| 综合激情成人伊人| 91精品国产综合久久蜜臀| thepron国产精品| 久久精品999| 亚洲二区视频在线| 亚洲欧美综合色| 亚洲丝袜另类动漫二区| 日本一区二区三区四区| 久久久久久久久久久99999| 91精品国产欧美一区二区| 91精品免费观看| 五月婷婷色综合| 久久国产成人午夜av影院| 亚洲国产成人porn| 午夜视频一区在线观看| 精品午夜一区二区三区在线观看| 国产a级毛片一区| 高清成人免费视频| av欧美精品.com| 精品视频一区 二区 三区| 91超碰这里只有精品国产| 欧美一卡二卡在线观看| 久久精品人人爽人人爽| 亚洲欧美日韩国产一区二区三区| 美国十次了思思久久精品导航| 欧美日韩在线播| 精品少妇一区二区三区视频免付费| 一区二区三区资源| 国产一区二区三区免费观看| 麻豆国产精品一区二区三区 | 欧美影院精品一区| 91精品国产91久久综合桃花| www国产成人| 一区二区三区资源| 成人免费视频一区| 精品免费日韩av| 亚洲一级二级在线| gogo大胆日本视频一区| 在线观看成人免费视频| 成人毛片视频在线观看| 欧美无砖专区一中文字| 亚洲欧洲精品天堂一级| 国产一区二区三区电影在线观看 | 亚洲日本在线天堂| 一区二区三区四区激情| 国产成人激情av| 欧美成人女星排名| 捆绑变态av一区二区三区| 欧美唯美清纯偷拍| 亚洲www啪成人一区二区麻豆| 国产精品日韩成人| 国产jizzjizz一区二区| 中文字幕在线一区| 波多野结衣中文字幕一区| 日本一区二区三区电影| 成人国产在线观看| 日本一区二区不卡视频| 成人性生交大片免费看视频在线| 国产美女视频一区| www久久精品| av一区二区三区黑人| 一区二区三区鲁丝不卡| 91福利在线免费观看| 亚洲主播在线观看| 精品国产乱码91久久久久久网站| 国产日韩精品一区二区浪潮av| 久久婷婷色综合| av欧美精品.com| 国产美女娇喘av呻吟久久| 亚洲国产成人自拍| 欧美偷拍一区二区| 国产精品亚洲午夜一区二区三区| 99精品偷自拍| 国产一区二区精品久久99| 久久精品久久久精品美女| 亚洲品质自拍视频| 亚洲第一在线综合网站| 亚洲一区二区精品视频| 免费观看30秒视频久久| 久久精品国产**网站演员| 国产精品小仙女| 欧洲av在线精品| 精品88久久久久88久久久| 91精品欧美福利在线观看| 久久这里只有精品6| 国产精品美女www爽爽爽| 亚洲小说欧美激情另类| 综合欧美亚洲日本| 国产91在线观看| 欧美日韩一区精品| 久久久久久久综合日本| 麻豆中文一区二区| 亚洲午夜激情网站| 亚洲成人av一区二区| 亚洲国产视频直播| 国产精品美女一区二区在线观看| 日本三级韩国三级欧美三级| 亚洲图片一区二区| 国产精品卡一卡二卡三| 亚洲色图在线视频| 青青草伊人久久| 国产一区不卡视频| 狂野欧美性猛交blacked| 粉嫩高潮美女一区二区三区| 成人免费va视频| 亚洲第一久久影院| 国产精品中文有码| 国产精品白丝jk白祙喷水网站| 久久婷婷成人综合色| 久久网站热最新地址| 一区二区在线免费观看| 国产自产视频一区二区三区| 日本女优在线视频一区二区| 国产精品一二三四五| 欧美日韩精品三区| 欧美不卡一区二区三区四区| 欧美激情综合网| 婷婷中文字幕一区三区| 国产成人高清视频| 99re成人精品视频| 欧美精品一区二区三区久久久 | 欧美国产日韩一二三区| 久久久久久亚洲综合| 香蕉成人啪国产精品视频综合网 | 99免费精品在线| 欧美mv日韩mv亚洲| 亚洲免费av高清| 色偷偷一区二区三区| 国产欧美在线观看一区| 国产精品综合二区| 亚洲精品成人少妇| 丁香天五香天堂综合| 天天影视色香欲综合网老头| 91精品免费在线观看|