yii2 建立ActiveForm 表單

2022-05-18 22:30:21 字數 4588 閱讀 8744

表單的生成

表單中的方法

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...