Yii框架表單模型和驗證用法

2022-10-06 09:24:09 字數 1493 閱讀 2597

表單模型cformmodel絕大部分繼承cmodelcmodel,由於表模型資料不需要持久化,所以主要在驗證操作上。下面以框架腳手架生成的**登入為例說明表單模型。

ehheq//模型中的驗證規則

public function rules()

$model=new loginform;//建立乙個登入表單模型

$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();//遍歷驗證器執行驗證

驗證器內部實現

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

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

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

else

$on=array();

if(method_exists($object,$name))

$validator->params=$params;

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

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

} else

ehheq

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

return $validator;

}建立驗證器流程

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

2、判斷驗證器是否存在model中,如果存在建立乙個內聯驗證器cinlinevalidator,如果不存在,程式設計客棧執行第3步

3、如果驗證器是框架自帶的匯入自帶驗證器,否則匯入外部驗證器,然後例項化並賦值。

當觸發validate()時候,可能產生的錯誤將被儲存在model中,可以通過呼叫 cmodel::geterrors() 和cmodel::geterror() 提取這些錯誤資訊

ps:小編在這裡推薦一款本站的php格式化美化的排版工具幫助大家在以後的php程式設計中進行**排版:

php****格式化美化工具:

YII框架分析筆記3 表單模型和驗證

表單模型cformmodel絕大部分繼承cmodelcmodel,由於表模型資料不需要持久化,所以主要在驗證操作上。下面以框架腳手架生成的 登入為例說明表單模型。php view plain copy 模型中的驗證規則 public function rules php view plain cop...

yii高階框架 表單小部件驗證

控制器 model 檢視層 控制器model層 namespace frontend models use yii base model class b extends model message 郵箱格式不正確 手機號 phone match pattern 1 0 9 message 手機號格式...

動態表單驗證和TP框架裡面的ajax

動態驗證的操作方法 function yz else else 在框架裡用ajax來實現輸入代號顯示姓名 打到模板是用上面的 function ming 表單 代號 js document ready function e type post datatype text success functi...