您的位置:首页 > 编程语言 > PHP开发

十四、yii终极表单之CForm

2013-10-12 00:00 148 查看
yii对表单的封装并没有就此结束,在CActiveForm的基础上,再次封装了表单,这个类就是CForm,它代表一个包含指定表单输入的表单对象。

简单的来 CForm把表单分成了 输入元素层(如input 等)和按钮元素层(如 submit button)

那么如何使用CForm来创建一个表单列

controller中

public function actionForm(){
$model = new User;
//实例化CForm生成一个表单对象
$form = new CForm($model->getFMConfig(), $model);
$this->performAjaxValidation($model);
if($form->submitted() && $form->validate()){
//            dump($model->attributes);
if(!$model->save()){
dump($model->getErrors());
}
}
$this->render('form',array(
'form'=>$form,
));
}
user模型中

//返回表单生成器的配置文件
public function getFMConfig(){
return array(
//                'title'=>'表单',
//                'description'=>'干嘛的',
'showErrorSummary'=>true,//是否显示所有错误
'showErrors'=>true,//是否显示错误
'activeForm'=>array(
'class'=>'CActiveForm',
'id'=>'user-active_form-form',
'enableAjaxValidation'=>true,
//                    'enableClientValidation'=>true,
),
'elements'=>array(
'username'=>array(
'type'=>'text',
'maxlength'=>32,
),
'city_id'=>array(
'type'=>'dropdownlist',
'prompt'=>'请选择',
'items'=>User::getCitys(),
),
),
'buttons'=>array(
'submit'=>array(
'type'=>'submit',
'label'=>'提交'
)
),
);
}
views/form.php

<h1>添加用户信息</h1>
<div class="form">
<?php echo $form;?>
</div>

在视图层只需要echo $form就可以生成如下表单



echo $form 对一个对象进行输出 会调用魔术方法__toString

public function __toString()
{
return $this->render();
}


我们看到实际上 他调用的是对象的render()方法,所以echo $form等同于$form->render();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  yii yii视频