CActiveForm验证机制 服务器端/客户端/ajax验证

CActiveForm实际上是对Chtml类的封装,它与Chmtl不同的地方是CActiveForm提供了验证机制,有三种:
   服务器端/客户端/ajax验证

转载于:

上帝的眼泪的博客   http://601502546.blog.163.com/blog/static/25961076201303195752896/

   基本表单:
   <?php $form=$this->beginWidget('CActiveForm',
  array(
   'id'=>'contact_form',
   'enableAjaxValidation'=>true//是否是ajax验证

//'enableClientValidation'=>true,//是否客户端验证   //'action'=>'site/contact',
   //'method'=>'get',
  ) 
  ); ?>
 <p class="note">Fields with <span class="required">*</span> are required.</p>

 <div class="row">
  <?php echo $form->labelEx($model,'name');  ?>
  <?php echo $form->textField($model,'name');?>
  <?php 
   //单独显示错误信息 
   echo $form->error($model,'name');    
  ?>
  
 </div>

 <div class="row">
  <?php echo $form->labelEx($model,'email'); ?>
  <?php echo $form->textField($model,'email'); ?>
  <?php 
   //单独显示错误信息 
   echo $form->error($model,'email');    
  ?>
 </div>

 <div class="row">
  <?php echo $form->labelEx($model,'subject'); ?>
  <?php echo $form->textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?>
 </div>

 <div class="row">
  <?php echo $form->labelEx($model,'body'); ?>
  <?php echo $form->textArea($model,'body',array('rows'=>6, 'cols'=>50)); ?>
 </div>
 <?php
   $model -> name = 0;  
    echo $form->radioButtonList($model,'name',

       array('1'=>'Male','0'=>'Female'),

       array('separator'=>' ','labelOptions'=>array('class'=>''))

  )
  ?>
  <div class="row">
  <?php echo $form->labelEx($model,'label:'); ?>
 <?php 
 
    $model ->name = array(1,2,3,4);//设定checkbox的默认值,其实应该在controller里面设定最好,radio,select的设定方法和这个一样    echo $form->checkBoxList($model,'name',

       array('1'=>'Football','2'=>'Music','3'=>'Game','4'=>'basketball'),

       array('separator'=>' ','labelOptions'=>array('class'=>'mylabel'))

  )
 ?>
 </div>
 <?php if(extension_loaded('gd')): ?>
 <div class="row">
  <?php echo $form->labelEx($model,'verifyCode'); ?>
  <div>
  <?php $this->widget('CCaptcha'); ?>
  <?php echo $form->textField($model,'verifyCode'); ?>
  </div>
  <div class="hint">Please enter the letters as they are shown in the image above.
  <br/>Letters are not case-sensitive.</div>
 </div>
 <?php endif; ?>

 <div class="row submit">
  <?php 
   
   echo CHtml::submitButton('Submit'); 
  ?>
 </div>
  //总体显示错误信息 <?php echo $form->errorSummary($model); ?><?php $this->endWidget(); ?>

1、如果开启ajax验证在controller端实现代码:
 public function actionContact()
 {
  $model=new ContactForm;
  //ajax validation  if(isset($_POST['ajax']) && $_POST['ajax']==='contact_form')  {   echo CActiveForm::validate($model);   Yii::app()->end();  }  
  if(isset($_POST['ContactForm']))
  {
   $model->attributes=$_POST['ContactForm'];
   if($model->validate())//服务器端验证   {
    $headers="From: {$model->email}\r\nReply-To: {$model->email}";
    mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
    Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
    $this->refresh();
   }
  }
  $this->render('contact',array('model'=>$model));
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值