亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Yii2創建表單(ActiveForm)方法詳解

2020-03-22 18:06:38
字體:
來源:轉載
供稿:網友
本文實例講述了Yii2創建表單(ActiveForm)的方法。分享給大家供大家參考,具體如下:由于表單涉及到一些驗證方面的信息,屬性設置又比較多、比較復雜,所以哪里有什么不正確的地方請留言指點目錄表單的生成表單中的方法
ActiveForm::begin()方法
ActiveForm::end()方法
getClientOptions()方法
其它方法:errorSummary、validate、validateMultiple表單中的參數
表單form自身的屬性
表單中各個項(field)輸入框相關的屬性
$fieldConfig
關于驗證的屬性
關于每個field容器樣式的屬性
ajax驗證
前端js事件
表單中的其它屬性我們先看看Yii里面最簡單的登錄表單以及生成的html代碼和界面,先有個直觀的了解 php $form = ActiveForm::begin(['id' = 'login-form']); = $form- field($model, 'username') = $form- field($model, 'password')- passwordInput() = $form- field($model, 'rememberMe')- checkbox() div If you forgot your password you can = Html::a('reset it', ['site/request-password-reset']) /div div = Html::submitButton('Login', ['class' = 'btn btn-primary', 'name' = 'login-button']) /div php ActiveForm::end(); 下面是生成的表單Html,我在里面標明了5部分。1、表單的生成在Yii中表單即ActiveForm也是Widget,在上面可以看到是由begin開始 php $form = ActiveForm::begin(['id' = 'login-form']); 中間為各個項的輸入框,最后由end結尾 php ActiveForm::end(); 2、表單中的方法在Widget中begin()方法會調用int方法public function init()在最后的end()方法會調用run方法public function run()1、ActiveForm::begin()方法//這個是在執行 $form = ActiveForm::begin(['id' = 'login-form']); 中的begin方法的時候調用的public function init() //設置表單元素form的id if (!isset($this- options['id'])) { $this- options['id'] = $this- getId(); //設置表單中間的要生成各個field的所使用的類 if (!isset($this- fieldConfig['class'])) { $this- fieldConfig['class'] = ActiveField::className(); //這個就是輸出表單的開始標簽 //如: form id="login-form" action="/lulublog/frontend/web/index.php r=site/login" method="post" echo Html::beginForm($this- action, $this- method, $this- options);2、ActiveForm::end()方法//這個是在執行 ActiveForm::end(); 中的end方法的時候調用的public function run() //下面這個就是往視圖中注冊表單的js驗證腳本, if (!empty($this- attributes)) { $id = $this- options['id']; $options = Json::encode($this- getClientOptions()); $attributes = Json::encode($this- attributes); $view = $this- getView(); ActiveFormAsset::register($view); * $attributes:為要驗證的所有的field數組。它的值是在activeform中創建field的時候,在field的begin方法中給它賦值的。 * 其中每個field又是一個數組,為這個field的各個參數 * 比如username的field中的參數有 * validate、id、name、 * validateOnChange、validateOnType、validationDelay、 * container、input、error * $options:為這個表單整體的屬性,如: * errorSummary、validateOnSubmit、 * errorCssClass、successCssClass、validatingCssClass、 * ajaxParam、ajaxDataType $view- registerJs("jQuery('#$id').yiiActiveForm($attributes, $options);"); //輸出表單的結束標簽 echo Html::endForm();3、getClientOptions()方法* 設置表單的全局的一些樣式屬性以及js回調事件等protected function getClientOptions() $options = [ 'errorSummary' = '.' . $this- errorSummaryCssClass, 'validateOnSubmit' = $this- validateOnSubmit, 'errorCssClass' = $this- errorCssClass, 'successCssClass' = $this- successCssClass, 'validatingCssClass' = $this- validatingCssClass, 'ajaxParam' = $this- ajaxParam, 'ajaxDataType' = $this- ajaxDataType, if ($this- validationUrl !== null) { $options['validationUrl'] = Url::to($this- validationUrl); foreach (['beforeSubmit', 'beforeValidate', 'afterValidate'] as $name) { if (($value = $this- $name) !== null) { $options[$name] = $value instanceof JsExpression $value : new JsExpression($value); return $options;下面這個是生成的表單驗證Js代碼jQuery(document).ready(function () { jQuery('#login-form').yiiActiveForm( "username":{ "validate":function (attribute, value, messages) { yii.validation.required(value, messages, {"message":"Username cannot be blank."}); "id":"loginform-username", "name":"username", "validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-username", "input":"#loginform-username", "error":".help-block"}, "password":{ "validate":function (attribute, value, messages) { yii.validation.required(value, messages, {"message":"Password cannot be blank."}); "id":"loginform-password", "name":"password", "validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-password", "input":"#loginform-password", "error":".help-block" "rememberMe":{ "validate":function (attribute, value, messages) { yii.validation.boolean(value, messages, { "trueValue":"1","falseValue":"0","message":"Remember Me must be either /"1/" or /"0/".","skipOnEmpty":1}); "id":"loginform-rememberme", "name":"rememberMe","validateOnChange":true, "validateOnType":false, "validationDelay":200, "container":".field-loginform-rememberme", "input":"#loginform-rememberme", "error":".help-block"} "errorSummary":".error-summary", "validateOnSubmit":true, "errorCssClass":"has-error", "successCssClass":"has-success", "validatingCssClass":"validating", "ajaxParam":"ajax", "ajaxDataType":"json"4、其它方法:errorSummary、validate、validateMultiplepublic function errorSummary($models, $options = [])它主要就是把model中的所有的錯誤信息匯總到一個div中。public static function validate($model, $attributes = null)public static function validateMultiple($models, $attributes = null)這兩個是獲取錯誤信息的方法,比較簡單也不說了。3、表單中的參數1、表單form自身的屬性$action:設置當前表單提交的url地址,如果為空則是當前的url
$method:提交方法,post或者get,默認為post
$option:這個里面設置表單的其它的屬性,如id等,如果沒有設置id,將會自動生成一個以$autoIdPrefix為前綴的自動增加的id//這個方法在Widget基本中public function getId($autoGenerate = true) if ($autoGenerate && $this- _id === null) { $this- _id = self::$autoIdPrefix . self::$counter++; return $this- 2、表單中各個項(field)輸入框相關的屬性Yii生成的每個field由4部分組成:① 最外層div為每個field的容器,
② label為每個field的文本說明,
③ input為輸入元素,
④ 還有一個div為錯誤提示信息。 div label for="loginform-username" Username /label input type="text" id="loginform-username" name="LoginForm[username]" div Username cannot be blank. /div /div $fieldConfig:這個是所有的field的統一的配置信息設置的屬性。也就是說在field類中的屬性都可以在這里進行設置。public function field($model, $attribute, $options = []) //使用fieldConfig和options屬性來創建field //$options會覆蓋統一的fieldConfig屬性值,以實現每個field的自定義 return Yii::createObject(array_merge($this- fieldConfig, $options, [ 'model' = $model, 'attribute' = $attribute, 'form' = $this,關于驗證的屬性:① $enableClientValidation:是否在客戶端驗證,也即是否生成前端js驗證腳本(如果在form中設置了ajax驗證,也會生成這個js腳本)。
② $enableAjaxValidation:是否是ajax驗證
③ $validateOnChange:在輸入框失去焦點并且值改變的時候驗證
④ $validateOnType:正在輸入的時候就進行驗證
⑤ $validationDelay:驗證延遲的時間,單位為毫秒這5個屬性都可以在創建每個field的時候單獨設置,因為在field類中就有這5個屬性。關于每個field容器樣式的屬性:$requiredCssClass:必填項的樣式,默認為‘required'
$errorCssClass:驗證錯誤的樣式,默認值為‘has-error'
$successCssClass:驗證正確的樣式,默認值為‘has-success'
$validatingCssClass:驗證過程中的樣式,默認值為‘validating'3、ajax驗證$validationUrl:ajax驗證的url地方
$ajaxParam:url中的get參數,用來標明當前是ajax請求,默認值為‘ajax'
$ajaxDataType:ajax請求返回的數據格式4、前端js事件屬性$beforeSubmit:在提交表單之前事件,如果返回false,則不會提交表單,格式為:function ($form) { ...return false to cancel submission...$beforeValidate:在每個屬性在驗證之前觸發,格式為:function ($form, attribute, messages) { ...return false to cancel the validation...$afterValidate:在每個屬性在驗證之后觸發,格式為:function ($form, attribute, messages) {5、表單中的其它屬性$validateOnSubmit:提交表單的時候進行驗證
$errorSummary:總的錯誤提示地方的樣式
$attributes:這個屬性比較特殊,它是在創建field的時候,在field中為這個form中的$attributes賦值的。這樣可以確保通過field方法生成的輸入表單都可以進行驗證更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲网址你懂得| 国产噜噜噜噜久久久久久久久| www.久久久久| 亚洲欧洲日产国码av系列天堂| 91亚洲国产成人久久精品网站| 日韩欧美在线免费观看| 日本韩国欧美精品大片卡二| 亚洲黄页视频免费观看| 国产亚洲成av人片在线观看桃| 国产亚洲精品成人av久久ww| 欧美专区中文字幕| 欧美成人小视频| 久久久精品一区二区| 精品国内产的精品视频在线观看| 在线观看国产精品日韩av| 亚洲最大在线视频| 日av在线播放中文不卡| 九九综合九九综合| 日韩电影免费在线观看| 欧美高清激情视频| 日韩在线视频一区| 久久中文字幕一区| 日韩免费看的电影电视剧大全| 色婷婷综合久久久久中文字幕1| 91高潮在线观看| 国产精品视频专区| 成人春色激情网| 日韩免费在线观看视频| 国产va免费精品高清在线观看| 在线播放日韩精品| 国产精品亚洲激情| 欧美一级淫片播放口| 欧美成人手机在线| 久久久亚洲福利精品午夜| 最近2019年中文视频免费在线观看| 欧美资源在线观看| 国产精品99久久久久久www| 亚洲黄色www| 亚洲变态欧美另类捆绑| 国产一区二区三区高清在线观看| 高清欧美电影在线| 亚洲激情在线视频| 久久精品国产久精国产思思| 秋霞av国产精品一区| 一区二区三区视频免费在线观看| 国产精品情侣自拍| 亚洲欧洲国产一区| 久久中国妇女中文字幕| 九九精品在线播放| 日韩国产精品亚洲а∨天堂免| 青青草成人在线| 国产精品久久久久久久久久久久| 欧美中在线观看| 亚洲欧美一区二区精品久久久| 亚洲春色另类小说| 国产有码一区二区| 91嫩草在线视频| 欧美视频13p| 亚洲成人在线视频播放| 欧美午夜精品久久久久久浪潮| 国产精品一区二区久久精品| 国产精品一区二区电影| 亚洲另类激情图| 欧美激情亚洲国产| 欧美国产视频一区二区| 欧美老女人在线视频| 欧美性xxxxx| 清纯唯美亚洲激情| 98精品国产高清在线xxxx天堂| 欧美极品欧美精品欧美视频| 日韩中文字幕久久| 日韩av电影中文字幕| 久久综合88中文色鬼| 亚洲影视中文字幕| 日韩欧美在线中文字幕| 国产在线视频一区| 亚洲97在线观看| 日韩精品中文字幕在线| 欧美日韩国产色视频| 热99在线视频| 国产精品久久久久久久久久久久久久| 色中色综合影院手机版在线观看| 亚洲免费伊人电影在线观看av| 亚洲激情视频网站| 国产日韩在线一区| 97久久久免费福利网址| 美女av一区二区三区| 最近2019中文字幕第三页视频| 国产97色在线|日韩| 欧美国产日韩一区二区| 国产精品91视频| 欧美午夜精品久久久久久浪潮| 日韩专区中文字幕| 国产精品久久色| 国产女人精品视频| 免费不卡在线观看av| 亚洲美女自拍视频| 欧美国产日韩一区二区在线观看| 中文字幕欧美视频在线| 日韩av大片免费看| 欧美国产日韩免费| 久久高清视频免费| 久久久精品中文字幕| 亚洲综合精品一区二区| 欧美中文字幕精品| 欧美亚洲伦理www| 黑人极品videos精品欧美裸| 亚洲风情亚aⅴ在线发布| 国产日韩欧美一二三区| 日韩中文字幕在线| 欧美wwwxxxx| 久久香蕉国产线看观看av| 69久久夜色精品国产69乱青草| 国产精品国产三级国产aⅴ浪潮| 欧美精品在线免费观看| 亚洲电影天堂av| 色天天综合狠狠色| 亚洲国产精品久久精品怡红院| 国产精品成人国产乱一区| 国产亚洲成av人片在线观看桃| 欧美日韩国产综合新一区| 法国裸体一区二区| 国产精品日韩一区| 精品亚洲夜色av98在线观看| 国产精品video| 国产精品吹潮在线观看| 国产xxx69麻豆国语对白| 55夜色66夜色国产精品视频| 热久久99这里有精品| 亚洲成色999久久网站| 亚洲天堂av电影| 精品国产乱码久久久久久婷婷| 色中色综合影院手机版在线观看| 美女撒尿一区二区三区| 国产精品丝袜高跟| 欧美老少配视频| 久久精品国产精品亚洲| 欧美成人午夜激情视频| 亚洲国产欧美自拍| 日韩在线视频免费观看高清中文| 欧美大片在线免费观看| 亚洲国产欧美日韩精品| 亚洲国产精品推荐| 国产成人精品久久久| 疯狂做受xxxx欧美肥白少妇| 成人欧美一区二区三区在线湿哒哒| 午夜精品蜜臀一区二区三区免费| 久久99国产精品久久久久久久久| 亚洲精品美女视频| 欧美成人精品一区二区| 亚洲欧美日韩视频一区| 久久人人爽人人爽爽久久| 日本久久久久亚洲中字幕| 国产精品一区二区3区| 95av在线视频| 在线观看精品国产视频| 亚洲成**性毛茸茸| 欧美日韩国产999| 欧美视频一区二区三区…| 欧美日韩加勒比精品一区| 国产一区二区三区精品久久久| 中文字幕精品www乱入免费视频| 国产精品爽爽爽爽爽爽在线观看| 亚洲精品日韩久久久|