茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    Yii框架表單模型和驗證用法
    來源:易賢網 閱讀:1587 次 日期:2016-08-19 15:42:32
    溫馨提示:易賢網小編為您整理了“Yii框架表單模型和驗證用法”,方便廣大網友查閱!

    本文實例講述了Yii框架表單模型和驗證用法。分享給大家供大家參考,具體如下:

    表單模型CFormModel絕大部分繼承CModelCModel,由于表模型數據不需要持久化,所以主要在驗證操作上。下面以框架腳手架生成的網站登錄為例說明表單模型。

    //模型中的驗證規(guī)則

    public function rules()

    {

      return array(

        array('username, password', 'required'),

        array('rememberMe', 'boolean'),

        array('password', 'authenticate'),

      );

    }

    ------------------------------------------------------------------------------------------------------

    $model=new LoginForm;//創(chuàng)建一個登錄表單模型

    $model->attributes=$_POST['LoginForm'];//傳入登錄數據

    CModel->setAttributes($values,$safeOnly=true)//調用CModel的setter方法

    //返回model中relues中定義的安全數據,經過下面的調用流程獲取一個驗證器集合

    //每個驗證器由CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2))

    CModel->getValidators()

    ->createValidators()

    ->rules()

    CModel->validate();//遍歷驗證器執(zhí)行驗證

    驗證器內部實現

    表單模型核心部分在驗證上,下面探討其實現方式。

    YII框架中驗證以獨立組件集合的形式存在,CValidator是所有驗證器的基類。還是以登錄驗證為例。rules方法中包含required、boolean、authenticate三個驗證器

    public static function createValidator($name,$object,$attributes,$params=array())

    {

      if(is_string($attributes))

        $attributes=preg_split('/[\s,]+/',$attributes,-1,PREG_SPLIT_NO_EMPTY);

      if(isset($params['on']))

      {

        if(is_array($params['on']))

          $on=$params['on'];

        else

          $on=preg_split('/[\s,]+/',$params['on'],-1,PREG_SPLIT_NO_EMPTY);

      }

      else

        $on=array();

      if(method_exists($object,$name))

      {

        $validator=new CInlineValidator;

        $validator->attributes=$attributes;

        $validator->method=$name;

        if(isset($params['clientValidate']))

        {

          $validator->clientValidate=$params['clientValidate'];

          unset($params['clientValidate']);

        }

        $validator->params=$params;

        if(isset($params['skipOnError']))

          $validator->skipOnError=$params['skipOnError'];

      }

      else

      {

        $params['attributes']=$attributes;

        if(isset(self::$builtInValidators[$name]))

          $className=Yii::import(self::$builtInValidators[$name],true);

        else

          $className=Yii::import($name,true);

        $validator=new $className;

        foreach($params as $name=>$value)

          $validator->$name=$value;

      }

      $validator->on=empty($on) ? array() : array_combine($on,$on);

      return $validator;

    }

    創(chuàng)建驗證器流程

    1、獲取屬性(array $attributes)和使用場景(array $on)

    2、判斷驗證器是否存在model中,如果存在創(chuàng)建一個內聯驗證器CInlineValidator,如果不存在,執(zhí)行第3步

    3、如果驗證器是框架自帶的導入自帶驗證器,否則導入外部驗證器,然后實例化并賦值。

    當觸發(fā)validate()時候,可能產生的錯誤將被存儲在model中,可以通過調用 CModel::getErrors() 和CModel::getError() 提取這些錯誤信息

    希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

    更多信息請查看網絡編程
    易賢網手機網站地址:Yii框架表單模型和驗證用法

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網