ActiveForm 表单小知识 [ 2.0 版本 ]
控制器中很简单
public function actionIndex()
{
$model = new Goods;
return $this->render('index', ['model'=>$model]);
}
模型(models)中
// 引入ActiveRecord 并继承 当然这个表单没半毛钱关系,但你控制器得实例化数据表吧,推荐使用ActiveRecord
use yii\db\ActiveRecord;
use Yii;
class Goods extends ActiveRecord
{
public static function tableName()
{
return "goods";
}
}
上面属于废话,略过,
视图(view)中,才是重点
首先引入ActiveForm和Html这里两个是很重要的
<?php
use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
?>
文本框:textInput();
密码框:passwordInput();
单选框:radio(),radioList();
复选框:checkbox(),checkboxList();
下拉框:dropDownList();
隐藏域:hiddenInput();
文本域:textarea(['rows'=>3]);
文件上传:fileInput();
提交按钮:submitButton();
重置按钮:resetButtun();
<?php $form = ActiveForm::begin([
'method' => 'post', // 传值类型
'action' => \yii\helpers\Url::to(['user/index']), // 默认提交到当前控制器方法,但可以设置
'options' => [ // 设置form的属性
'enctype' => 'multipart/form-data', // 上传文件设置 注意:与post方法配套使用
'class' => 'form-horizontal', // 设置form的class
],
'fieldConfig' => [ // 为每一个input 设置
'template' => "{label}\n<div class=\"col-lg-5\">{input}</div>\n<div class=\"col-lg-5\">{error}</div>",
// <label></label> \n <div class="..."> <input ...> </div>\n<div class=\"col-lg-5\">这个是yii默认的错误提示</div>
'labelOptions' => ['class' => 'col-lg-2 control-label'], // 设置label 的属性 添加class
],
]); ?>
<?= $form->field($model, 'username')->textInput([
'maxlength' => 20, // 最多输入20个字符
'minlength' => 6, // 最少输入6个字符
'placeholder' => '提示',
]) ?>
<?= $form->field($model, 'password')->passwordInput(['maxlength' => 20]) ?>
<?= $form->field($model, 'sex')->radioList(['1' => '男', '0' => '女']) ?>
<?= $form->field($model, 'edu')->dropDownList(['1' => '大学', '2' => '高中', '3' => '初中'], ['prompt' => '请选择', 'style' => 'width:120px']) ?>
<?= $form->field($model, 'file')->fileInput() ?>
<?= $form->field($model, 'hobby')->checkboxList(['0' => '篮球', '1' => '足球', '2' => '羽毛球', '3' => '乒乓球']) ?>
<?= $form->field($model, 'hobby')->checkbox() ?> // 单复选框,值1/0
<?= $form->field($model, 'info', [
// 可以自定义,并会覆盖掉form中设置的属性
'template' => '<div class="form-group">{label}<div class="col-lg-6">{input}</div>{error}</div>',
'labelOptions' => ['class' => 'col-lg-2 control-label'],
])->textarea([
'rows' => 4, // 可输入多少行
'placeholder' => '提示'
]) ?>
<?= $form->field($model, 'userid')->hiddenInput(['value' => 3]) ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?= Html::resetButton('重置', ['class' => 'btn btn-info']) ?>
</div>
小知识
$model->isNewRecord?'创建':'修改'; // 用来判断是否是修改还是创建
在是以用 dropDownList 和 checkboxList 时,不可能一个个的写,肯定是想循环遍历出来啊
### // 控制器中
use yii\helpers\ArrayHelper;
### //方法中
$grade = Groud::find()->all(); // 查询出想遍历的东东
$listData = ArrayHelper::map($grade, 'id', 'name'); // 出来的就是这个样子的['1' => '大学', '2' => '高中', '3' => '初中']
### // 视图中
<?= $form->field($model, 'sex')->radioList($listData) ?>
<?= $form->field($model, 'edu')->dropDownList($listData, ['prompt' => '请选择', 'style' => 'width:120px']) ?>
噢啦
smart
注册时间:2017-11-01
最后登录:2019-02-12
在线时长:23小时2分
最后登录:2019-02-12
在线时长:23小时2分
- 粉丝3
- 金钱60
- 威望50
- 积分790
共 1 条评论
总算明白了'template' => '
{label}{input}{error}',这个的用法