首页 > 开发 > PHP > 正文

Yii2创建表单(ActiveForm)方法详解

2024-05-04 22:29:01
字体:
来源:转载
供稿:网友

本文实例讲述了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 style="color:#999;margin:1em 0">   If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?>  </div>  <div class="form-group">     <?= 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);}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表