本文实例讲述了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() ?>If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?><?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?><?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(); } //这个就是输出表单的开始标签 //如: