奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

php語言

Yii2創建表單(ActiveForm)方法

時間:2024-09-16 05:39:23 php語言 我要投稿
  • 相關推薦

Yii2創建表單(ActiveForm)方法

  Yii2創建表單(ActiveForm)的方法,結合實例形式詳細分析了Yii創建表單的詳細步驟及相關函數與屬性的使用技巧,需要的朋友可以參考下.

  由于表單涉及到一些驗證方面的信息,屬性設置又比較多、比較復雜,所以哪里有什么不正確的地方請留言指點

  目錄

  表單的生成

  表單中的方法

  ActiveForm::begin()方法

  ActiveForm::end()方法

  getClientOptions()方法

  其它方法:errorSummary、validate、validateMultiple

  表單中的參數

  表單form自身的屬性

  表單中各個項(field)輸入框相關的屬性

  $fieldConfig

  關于驗證的屬性

  關于每個field容器樣式的屬性

  ajax驗證

  前端js事件

  表單中的其它屬性

  我們先看看Yii里面最簡單的登錄表單以及生成的html代碼和界面,先有個直觀的了解

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

  <?= $form->field($model, 'username') ?>

  <?= $form->field($model, 'password')->passwordInput() ?>

  <?= $form->field($model, 'rememberMe')->checkbox() ?>

  <p style="color:#999;margin:1em 0">

  If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?>

  </p>

  <p class="form-group">

  <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>

  </p>

  <?php ActiveForm::end(); ?>

  下面是生成的表單Html,我在里面標明了5部分。

  1、表單的生成

  在Yii中表單即ActiveForm也是Widget,在上面可以看到是由begin開始

  ?

  1

  <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

  中間為各個項的輸入框,最后由end結尾

  ?

  1

  <?php ActiveForm::end(); ?>

  2、表單中的方法

  在Widget中begin()方法會調用int方法

  ?

  1

  public function init()

  在最后的end()方法會調用run方法

  ?

  1

  public function run()

  1、ActiveForm::begin()方法

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  //這個是在執行 $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()方法

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  //這個是在執行 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()方法

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  /*

  * 設置表單的全局的一些樣式屬性以及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、validateMultiple

  ?

  1

  public function errorSummary($models, $options = [])

  它主要就是把model中的所有的錯誤信息匯總到一個p中。

  ?

  1

  2

  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

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  //這個方法在Widget基本中

  public function getId($autoGenerate = true)

  {

  if ($autoGenerate && $this->_id === null) {

  $this->_id = self::$autoIdPrefix . self::$counter++;

  }

  return $this->_id;

  }

  2、表單中各個項(field)輸入框相關的屬性

  Yii生成的每個field由4部分組成:

  ① 最外層p為每個field的容器,

  ② label為每個field的文本說明,

  ③ input為輸入元素,

  ④ 還有一個p為錯誤提示信息。

  ?

  1

  2

  3

  4

  5

  <p class="form-group field-loginform-username required has-error">

  <label class="control-label" for="loginform-username">Username</label>

  <input type="text" id="loginform-username" class="form-control" name="LoginForm[username]">

  <p class="help-block">Username cannot be blank.</p>

  </p>

  $fieldConfig:這個是所有的field的統一的配置信息設置的屬性。也就是說在field類中的屬性都可以在這里進行設置。

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  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'

【Yii2創建表單(ActiveForm)方法】相關文章:

ThinkPHP中create()方法自動驗證表單信息03-03

職稱計算機考試Dreamwaver中表單的創建與應用12-07

php通過記錄IP來防止表單重復提交方法分析03-21

JavaScript重置表單的實現03-23

php創建cookie獲取方法03-02

Dreamweaver用屬性面板創建鏈接的方法12-23

Dreamweaver中表格的創建及基本編輯方法02-27

Yii框架form表單用法實例03-02

Word文檔內部的創建超級鏈接的方法12-04

主站蜘蛛池模板: 石楼县| 长武县| 荥经县| 蒲江县| 高碑店市| 吐鲁番市| 镇平县| 札达县| 泸定县| 南部县| 荆门市| 驻马店市| 鱼台县| 三台县| 屏山县| 北川| 巢湖市| 黄骅市| 牙克石市| 攀枝花市| 垫江县| 金湖县| 鸡东县| 轮台县| 枝江市| 秀山| 苍山县| 本溪| 子长县| 宁蒗| 通化市| 华池县| 黄石市| 乌审旗| 邵阳市| 天等县| 上栗县| 正安县| 南乐县| 阿拉善左旗| 正蓝旗|