2.5表單
1.表單的創建
1.在Yii中主要是通過yii\widgets\ActiveForm類來創建表單(表單小部件)。
2.ActiveForm::begin()不僅標誌着表單的開始,也同時創建了一個表單實例。
<?php $form=ActiveForm::begin();?> //$form是表單實例
...
<?php ActiveForm::end();?>
3.放在ActiveForm::begin()與ActiveForm::end()之間的所有內容都被包裹在HTML的<form>標籤中。
4.中間是通過調用ActiveForm::field()方法來創建ActiveField實例,這個實例會創建表單元素與元素的標籤,以及對應的JavaScript應證。
5.每個ActiveField都有對應的模型和屬性,input輸入框的name屬性會自動地根據屬性名創建;同時還會用屬性的驗證規則來驗證用戶的數據輸入。
圖片截取自:魏曦教你學Yii2.0優酷視頻.
2.ActiveField對象的使用
由第一節的知識點可以知道,對於表單如何使用的問題其實就是問:
ActiveField類如何使用的問題。
//舉個例子
<?= $form->field($model,'body')->textarea(['rows'=>3]) =?>
//$form->field($model,'body')創建了一個ActiveField對象;
//ActiveField的方法textarea()創建了3行的輸入框;
3.Html幫助類
在表單的開始和結束標籤之間還有一些和模型對象沒有關係的格外HTML標籤,比如submitButton我們可以:
- 使用純的Html標籤
- 使用yii\helpers\Html幫助類中的方法來添加到表單中
圖片截取自:魏曦教你學Yii2.0優酷視頻.
4.塊賦值
input標籤中的name,實際是以對象來命名的一個數組,數組的健對應的是模型的屬性。
<input type="text" id="contacnform-name" name="ContactForm[name]"/>
模型執行load方法,就是對每個屬性都執行這樣的一句賦值:
$model->name=isset($ContanctForm['name']) ? $ContanctForm['name'] : null;
所以這句話就可以理解了:
$model->load(Yii::$app->request->post())