Yii框架表單模型和驗證用法,yii框架表單模型_PHP教程
Jul 12, 2016 am 08:50 AMYii框架表單模型和驗證用法,yii框架表單模型
本文實例講述了Yii框架表單模型和驗證用法。分享給大家供大家參考,具體如下:
表單模型CFormModel絕大部分繼承CModelCModel,由于表模型數(shù)據(jù)不需要持久化,所以主要在驗證操作上。下面以框架腳手架生成的網(wǎng)站登錄為例說明表單模型。
//模型中的驗證規(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'];//傳入登錄數(shù)據(jù) CModel->setAttributes($values,$safeOnly=true)//調(diào)用CModel的setter方法 //返回model中relues中定義的安全數(shù)據(jù),經(jīng)過下面的調(diào)用流程獲取一個驗證器集合 //每個驗證器由CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2)) CModel->getValidators() ->createValidators() ->rules() CModel->validate();//遍歷驗證器執(zhí)行驗證
驗證器內(nèi)部實現(xiàn)
表單模型核心部分在驗證上,下面探討其實現(xiàn)方式。
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)建一個內(nèi)聯(lián)驗證器CInlineValidator,如果不存在,執(zhí)行第3步
3、如果驗證器是框架自帶的導(dǎo)入自帶驗證器,否則導(dǎo)入外部驗證器,然后實例化并賦值。
當觸發(fā)validate()時候,可能產(chǎn)生的錯誤將被存儲在model中,可以通過調(diào)用 CModel::getErrors() 和CModel::getError() 提取這些錯誤信息
PS:小編在這里推薦一款本站的php格式化美化的排版工具幫助大家在以后的PHP程序設(shè)計中進行代碼排版:
php代碼在線格式化美化工具:http://tools.jb51.net/code/phpformat
更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php日期與時間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











1. WeChat? ? ? ?? ???? ???? WeChat ?? ??? ? ?? ???? ???? ?????. 2. ?? ? ?? ??? ?? ??? ?? ??? ?????. 3. ?? ?, ? ?? ? ???? ????/???? ??? ??? ???.

??? ????? ??? ?? ?????? PDF ??? ???, ??? ??? ??? ???? ????. ??? ??? ? SignatureValid ???? ?? ?? ??? ?????. ??? ???? ??? ???? ? ? ????. ??? ???? ?? ?????. PDF?? ?? ???? ??? ???????. PDF?? ??? ???? ?? PDF ??? ??? ???? ?? ??? ? ?? ??? ??? ???? ?????. ??? ?? ???? PDF ??? ??? ??? ? ????. Adobe Reader?? PDF? ???. ??? ??? ??? ???? ???? ?? ?? ??? ?????. ??? ??? ?? ??? ?????. ?? ??? ??? ? ?? ??? ??? ??? ?????. ?? ??? ???? ??? ?????.

?? ?? ??? ??? ?????. ?? ?? ?? ???? ???? ?? ?? ??? ?? 11?? ??? ?????. ??????? ??? ???? ? ??? ???? ?? ? ??? ?????. IFSC ??? ? ???? ????. ??? ?? 4?? ????, ??? ??? 6?? ?????. NEFT(National Electronic Funds Transfer), RTGS(Real Time Gross Settlement) ? IMPS(Immediate Payment Service)? IFSC ??? ??? ?? ?? ? ?????. ?? ???? ???? IFSC ??? ???? ? ?? ???? ??? ??? ????. ??? ???? ?????. ?? 4?? ?????. ?? ?? ??? ?????.Che

golang??? ??? ???? ???? ?? ???? ???? ? ??? ?????. ???? ???? ?? ? ?? ??? ???? ?? ??? ? ??? ??? ?? ?? ???? ???? ?? ??? ?????. ? ??? golang?? ???? ??? ???? ? ???? ?????. ? ?? ??? ??? ? ?? ????? ???? ????. ?? golang? []rune ??? ???? ??? ? ????.

PHP8? ?? ??? PHP? ??????? ? ?? ???? ??? ?????. ? ??? ??? ??? ??? ??? ?? ??? ????? ??? ?? ? ??? ?? ? ?? ??? ??? ????. ? ????? ??? ??? ??? ? ??? ?? ??? ???????. ?? ? ??? ??? ???? ?? ??? ?? ?????. ?? ??? ???? ???? ???? ???? ? ?? ?????. ??? ?? ? ??? ??? ??? ? ?? ? ??? ?? ??????. ???? ???? ??? ? ??? ????? ?? ? ?? ?????.

Steam? ?? ????? ???? ??????. ??? ?? ?? ???? Steam? ???? ? ??? ?? ?? ?????? ?? ????? ???? ? ????. ? ??? ???? ??? ?? ?? ???? ????. ??? ????? ????? ???? ??? ???? ?? ?? ????. Steam ??? ?? ?????? ?? ?? 1: ????? ??? ?? ?? ????? ?? ????? ??? ?? ?? ???? ??? ? ?? ??? ???? ????? ????? ???? ??? ??? ? ?? ??? ???? SMS ???? ???? ?? ??? ?? ? ????. ??? ????? ?? ?? ? ??, ??? ?????.

Laravel?? ??? paths/ ??? ?????. ??? web.php ??? ???? ????. ? ??? Laravel ??? ??? ? ?????. Laravel ??? ??? ?? URI ? ??? ??? ?????. web/routes.php?? useIlluminate\Support\Facades\Route::get('/student',function(){return'HelloStudent';}); ??? ??? ?????. ? ???? ??? ???? ?? ?? ? CSRF ?? ??? ????. ??? ?? ??? ????? ??? ?? ????.

???? ??? ??? ????? ????? ??? ??? ?? ??? ??? ?? ? ?? ?????. ??? ???? ???? ?? ???? ?? ???? ???? ?? ?? ?????. PHP ????? Yii? ???? ??? ? ??????? ??? ???? ? ??? ?? ??? ????????. ??? Yii ?????? ???? ???? ???? ?? ???? ???? ??? ?????. ?????? ?? ?? Yii ??????? ?????? ??? ?? ??? ?????. ??? ?? ????? ?? ???? ??? ???? ???
