欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

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

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

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

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

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

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

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

使用方法(實現(xiàn)效果)

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));
    }
    //...
  }
}

實現(xiàn)方法

定義參數(shù)驗證模型

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

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

定義參數(shù)驗證服務(wù)類

定義參數(shù)驗證服務(wù)類,主要功能有:

  • 設(shè)置參數(shù)列表和參數(shù)規(guī)則列表。
  • 使用 參數(shù)驗證模型 進行驗證和存儲驗證錯誤消息。
  • 使用魔術(shù)方法獲取 參數(shù)驗證模型 中的驗證錯誤消息。
?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 數(shù)據(jù)項
   * @param array $rules 驗證規(guī)則
   * @return bool
   */
  public function validate($data, $rules)
  {
    // 添加驗證規(guī)則
    $this->model->setRules($rules);
    // 設(shè)置參數(shù)
    $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);
    }
  }
}

總結(jié)

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《yii2 在控制器中驗證請求參數(shù)的使用方法》,本文關(guān)鍵詞  yii2,在,控制器,中,驗證,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《yii2 在控制器中驗證請求參數(shù)的使用方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于yii2 在控制器中驗證請求參數(shù)的使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    中文字幕一区二| 免费观看一区二区三区| 中国女人特级毛片| 欧美成人国产一区二区| 日韩精品电影在线| 少妇一级淫片免费放播放| 欧美日韩精品久久久| 亚洲一区成人在线| 亚洲综合中文网| 欧美无人高清视频在线观看| 一区二区三区不卡在线观看 | 免费看黄色aaaaaa 片| 欧美精品乱码久久久久久按摩 | 亚洲人xxxx| 99国产精品久久久久| 欧美制服丝袜第一页| 一区二区三区四区在线| 少妇熟女视频一区二区三区| 欧美日本一道本在线视频| 亚洲成人激情自拍| 熟妇高潮精品一区二区三区| 精品区一区二区| 国内精品国产三级国产a久久| 欧日韩不卡视频| 国产精品久久久久久久浪潮网站| 成人一道本在线| 91黄色免费观看| 亚洲国产视频直播| 人妻丰满熟妇av无码久久洗澡| 精品国产一区二区在线观看| 国产自产2019最新不卡| 91高清免费看| 一区二区三区四区不卡视频| 中文成人无字幕乱码精品区| 精品久久久久久综合日本欧美| 国产乱色国产精品免费视频| 唐朝av高清盛宴| 亚洲国产综合在线| 亚洲天堂视频一区| 日本一区二区三区在线观看| 94色蜜桃网一区二区三区| 欧美日本在线观看| 激情久久五月天| 一本久久综合亚洲鲁鲁五月天| 亚洲自拍偷拍网站| 亚洲成人网在线播放| 国产精品视频在线看| 丰满少妇中文字幕| 精品福利一区二区三区| 盗摄精品av一区二区三区| 欧美日韩国产一二三| 久久99精品国产91久久来源| 五月天婷婷色综合| 视频一区中文字幕国产| 国产白丝一区二区三区| 亚洲在线视频网站| 国产又粗又硬视频| 亚洲激情图片小说视频| 精品无码国产污污污免费网站| 国产精品电影院| 青青草视频播放| 亚洲欧洲三级电影| 性色av蜜臀av色欲av| 中文字幕欧美一| 巨胸大乳www视频免费观看| 中文字幕一区二区三区不卡在线| 中文字幕在线播放视频| 国产精品久久影院| 一区二区三区少妇| 综合网在线视频| 午夜理伦三级做爰电影| 亚洲色图.com| 天天舔天天操天天干| 亚洲一区二区三区自拍| 99国产精品无码| 丝袜美腿一区二区三区| 国内偷拍精品视频| 国产专区欧美精品| 欧美一区二区性放荡片| 成人黄色大片在线观看| 精品日韩欧美在线| 欧美性猛交乱大交| 国产精品网曝门| 男生草女生视频| 亚洲一级电影视频| 538任你躁在线精品视频网站| 免费观看在线综合色| 欧洲av一区二区嗯嗯嗯啊| 国产一区二区美女| 日韩欧美专区在线| 无码人妻久久一区二区三区蜜桃| 久久久久免费观看| 日本黄色片在线播放| 亚洲午夜一区二区| 精品欧美一区二区久久久久| 久久爱www久久做| 91精品午夜视频| 国产伦精品一区二区三区妓女下载| 国产欧美精品在线观看| 国产黄色网址在线观看| 樱花影视一区二区| 一区视频免费观看| 国产大陆亚洲精品国产| 久久综合九色欧美综合狠狠| 波多野结衣加勒比| 亚洲一区二区五区| 91黄色激情网站| 99视频热这里只有精品免费| 欧美激情中文不卡| 亚洲一二三精品| 久久国产生活片100| 日韩午夜激情电影| 尤物网站在线观看| 亚洲成年人网站在线观看| 91福利在线免费观看| 不卡av在线网| 亚洲欧洲色图综合| 色婷婷狠狠综合| 99re这里只有精品首页| 亚洲日本韩国一区| 色8久久人人97超碰香蕉987| av爱爱亚洲一区| 专区另类欧美日韩| 看片网站在线观看| 99久久精品国产一区二区三区| 中文字幕一区二区三区四区不卡| 免费三级在线观看| 成人精品电影在线观看| 亚洲欧洲美洲综合色网| 色综合中文综合网| 久久婷婷成人综合色| 国产精品久久久久无码av色戒| 免费在线观看精品| 精品电影一区二区| аⅴ天堂中文在线网| 国产一区二区h| 亚洲国产精品精华液ab| 97在线观看免费高| av亚洲产国偷v产偷v自拍| 亚洲欧美区自拍先锋| 欧美亚洲综合在线| 久久久老熟女一区二区三区91| 五月天激情小说综合| 日韩精品专区在线| 少妇一级黄色片| 成人自拍视频在线| 亚洲精品精品亚洲| 欧美精三区欧美精三区| 91精品国产自产| 国内成人自拍视频| **欧美大码日韩| 欧美三级资源在线| 人妻无码中文久久久久专区| 久久99精品国产麻豆不卡| 中文字幕av资源一区| 日本高清不卡一区| 国产原创剧情av| 久久爱www久久做| 国产精品乱码人人做人人爱| 在线视频综合导航| 欧美肉大捧一进一出免费视频| 另类综合日韩欧美亚洲| 欧美激情一区三区| 欧美视频在线一区| 亚洲精品理论片| 国产精一区二区三区| 亚洲欧美日韩国产手机在线| 337p亚洲精品色噜噜| 神马久久久久久久久久久| 成人精品视频网站| 午夜av一区二区| 国产日韩欧美不卡| 欧美日精品一区视频| 性少妇bbw张开| 不卡视频在线观看| 日本视频中文字幕一区二区三区| 国产亚洲污的网站| 欧美性猛片aaaaaaa做受| 自拍偷拍中文字幕| www.亚洲激情.com| 欧美aⅴ一区二区三区视频| 国产精品欧美综合在线| 在线观看91精品国产麻豆| 貂蝉被到爽流白浆在线观看| 91麻豆视频网站| 久久av老司机精品网站导航| 亚洲精品国产精华液| 精品国产一区二区三区忘忧草| 日韩av成人高清| 亚洲天堂久久久久久久| 精品欧美一区二区在线观看| 一本一道波多野结衣一区二区| 中文字幕影片免费在线观看| 成人激情黄色小说| 免费国产亚洲视频| 伊人性伊人情综合网| 国产亚洲1区2区3区| 777欧美精品| 一本久久精品一区二区| av黄色免费网站|