表單的生成
表單中的方法
activeform::begin()方法
activeform::end()方法
getclientoptions()方法
其它方法:errorsummary、validate、validatemultiple
表單中的引數
表單form自身的屬性
表單中各個項(field)輸入框相關的屬性
$fieldconfig
關於驗證的屬性
關於每個field容器樣式的屬性
ajax驗證
前端js事件
表單中的其它屬性
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()
//設定表單中間的要生成各個field的所使用的類
if (!isset($this->fieldconfig['class']))
//這個就是輸出表單的開始標籤
//如:
echo html::beginform($this->action, $this->method, $this->options);
}複製**
2、activeform::end()方法
//這個是在執行 activeform::end(); 中的end方法的時候呼叫的
public function run()
//輸出表單的結束標籤
echo html::endform();
}複製**
3、getclientoptions()方法
/** 設定表單的全域性的一些樣式屬性以及js**事件等
*/protected function getclientoptions()
foreach (['beforesubmit', 'beforevalidate', 'aftervalidate'] as $name)
}return $options;
}複製**
下面這個是生成的表單驗證js**
jquery(document).ready(function () );
},"id":"loginform-username",
"name":"username",
"validateonchange":true,
"validateontype":false,
"validationdelay":200,
"container":".field-loginform-username",
"input":"#loginform-username",
"error":".help-block"},
"password":);
},"id":"loginform-password",
"name":"password",
"validateonchange":true,
"validateontype":false,
"validationdelay":200,
"container":".field-loginform-password",
"input":"#loginform-password",
"error":".help-block"
},"rememberme":);
},"id":"loginform-rememberme",
"name":"rememberme","validateonchange":true,
"validateontype":false,
"validationdelay":200,
"container":".field-loginform-rememberme",
"input":"#loginform-rememberme",
"error":".help-block"}
},);
});複製**
4、其它方法:errorsummary、validate、validatemultiple
public 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)
return $this->_id;
}複製**
2、表單中各個項(field)輸入框相關的屬性
yii生成的每個field由4部分組成:
最外層div為每個field的容器,
label為每個field的文字說明,
input為輸入元素,
還有乙個div為錯誤提示資訊。
username
username cannot be blank.
複製**
$fieldconfig:這個是所有的field的統一的配置資訊設定的屬性。也就是說在field類中的屬性都可以在這裡進行設定。
public function field($model, $attribute, $options = )
複製**
關於驗證的屬性:
$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)
複製**
$beforevalidate:在每個屬性在驗證之前觸發,格式為:
function ($form, attribute, messages)
複製**
$aftervalidate:在每個屬性在驗證之後觸發,格式為:
function ($form, attribute, messages)
複製**
5、表單中的其它屬性
$validateonsubmit:提交表單的時候進行驗證
$errorsummary:總的錯誤提示地方的樣式
$attributes:這個屬性比較特殊,它是在建立field的時候,在field中為這個form中的$attributes賦值的。這樣可以確保通過field方法生成的輸入表單都可以進
Yii2建立表單
文字框 textinput 密碼框 passwordinput 單選框 radio radiolist 核取方塊 checkbox checkboxlist 下拉框 dropdownlist 隱藏域 hiddeninput 文字域 textarea rows 3 檔案上傳 fileinput 提交按...
Yii2 建立多應用
yii2.0的高階應用模板包括三個預設的應用模板 在frontend同目錄新建乙個名為weixin資料夾.把frontend目錄下面的東西全拷貝到weixin目錄裡面 修改web目錄index.php的包含路徑,還有config main.php的包含路徑 修改config main.php配置項c...
Yii2建立modules方法
yii2本身支援建立版本分支,這裡面有些坑需要記錄一下 在模組下的main.php檔案return的陣列中直接新增 第一種方式 aliases frontend modules modules class module 第二種方式 modules v1 v1模組 class frontend mod...