使用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
我们看到实际上 他调用的是对象的render()方法,所以echo $form等同于$form->render(); |
|