yii setScenario场景验证问题

yii setScenario场景验证问题

$company->setScenario('certification'); //$company 公司model
 
if (isset($_POST['Company'])) {
$company->attributes = $_POST['Company'];
$company->certification = Company::STATUS_pending;
$v = $company->validate(); // 打印 false
$this->controller->error(current(current($company->getErrors()))); // Lianxiren 不可为空白.<span></span>

// company model rules
 
array('lianxiren,company_name', 'required'),
array('company_name, registered_capital, tc, coc, trc, captcha', 'required', 'on' => 'certification'),
array('captcha', 'captcha', 'on' => 'certification'),

在用户表当中
1.注册的时候,要验证验证码,所以,就在member控制器的actionRegister中设置一个场景myse
public function actionRegister(){
        $model=new Members();
        $flag=TRUE;
        if(isset($_POST['Members'])){
            $flag=FALSE;
            $model->setScenario('myse');
            $model->attributes=$_POST['Members'];
            if($model->save()){
                //成功跳转
                //设计显示文字、跳转链接
                $links=array();
                $links[0][0]='跳转到登录页';
                $links[0][1]='./index.php?r=member/login';
//                $links[1][0]='继续发表评论';
//                $links[1][1]='./index.php?r=member/register';
                //临时改变布局,不显示导航头和底部
                //$this->layout='//layouts/my_alert';
                $this->render('success',array('message'=>'恭喜,注册成功','links'=>$links));
                exit;
            }
            
        }

在Members这个model中
public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('username, password','required'),
                        //只在注册场景当中才使用验证码
                        array('verifyCode','required','message'=>'验证码不能为空','on'=>'myse'),
                        array('username','unique','message'=>'该用户已经被注册'),
                        //验证两次密码是否一致
                        array('password2','compare','compareAttribute'=>'password','message'=>'两次密码不一致!'),
                        //对验证码进行校验,只在注册场景当中才使用验证码
                        array('verifyCode','captcha','message'=>'请输入正确的验证码','on'=>'myse'),
			array('mb_integral, mbl_id, email_check, mobile_check, user_check', 'numerical', 'integerOnly'=>true),
			array('username, password, tel, wx_sex', 'length', 'max'=>16),
			array('question, answer, wx_language, wx_city, wx_province, wx_country', 'length', 'max'=>32),
			array('email, wx_nickname', 'length', 'max'=>64),
			array('mobile', 'length', 'max'=>11),
			array('mb_qq', 'length', 'max'=>12),
			array('headimg, wx_openid, wx_headimgurl', 'length', 'max'=>255),
			array('address', 'length', 'max'=>128),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('mb_id, nickname,verifyCode,sex,username, password,create_time, question, answer, email, tel, mobile, mb_qq, headimg, address, wx_openid, wx_nickname, wx_sex, wx_language, wx_city, wx_province, wx_country, wx_headimgurl, mb_integral, mbl_id, create_time, email_check, mobile_check, user_check', 'safe', 'on'=>'search'),
		);
	}

在视图中:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>网评如潮</title>
<link rel="stylesheet" type="text/css" href="./assets/fronta/css/css.css" />
<style type="text/css">
    .zcnrl_4 .errorMessage{
        display: inline;
    }
</style>
</head>
<body style="background:#f7f4f4;">
<!--top-->
<div class="t_2">
 <span><a href="./index.php?r=comments/commentslist"><img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_1.jpg"/></a><span>
 <span style="margin-left:250px;"><a href="./index.php?r=comments/commentslist"><img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/hywp_1.jpg"/></a></span>
</div>
<?php 
    $form=$this->beginWidget('CActiveForm',array(
        'id'=>'members-form',
        //'enableAjaxValidation'=>TRUE,
        'enableAjaxValidation'=>FALSE,
        'htmlOptions'=>array(
            'class'=>'form-horizontal',
        )
    ))
?>
<!--注册-->
<div class="zc_1">
 <div class="zc_2"></div>
 <div class="zc_3">
  <div class="zc_left">
   <div class="zcnrl_1">
    <span style="font-size:16px; font-weight:bold;">会员注册</span>  
    <span>“<font style="color:#d02830;"> * </font>”为必填项</span>
   </div>
   
   
   <div class="zcnrl_2">
    <div class="zcnrl_3">
     <span class="s_1"><font style="color:#d02830">*</font> 用户名:</span>
     <span class="s_2">
         <?php echo $form->textField($model,'username',array('class'=>'inp_4'));?>
     </span>
    </div>
    <div class="zcnrl_4">
        <?php 
            if($flag==TRUE){
                //第一次打开网页
                echo '请输入用户名';
            }else if($form->error($model,'username')){
                echo '<img src="./assets/fronta/images/zc_3.jpg" style="vertical-align:middle;"/> '.$form->error($model,'username');
            }else{
        ?>
        <img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="vertical-align:middle;"/> 恭喜,用户名可以使用!
            <?php }?>
    </div>
   </div>
   
   <div class="zcnrl_2">
    <div class="zcnrl_3">
     <span class="s_1"><font style="color:#d02830">*</font> 密码:</span>
     <span class="s_2">
         <?php echo $form->textField($model,'password',array('class'=>'inp_4'));?>
     </span>
    </div>
    <div class="zcnrl_4">
        <!--
     <span class="s_3"><img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="margin-top:10px;"/> </span>
     <span class="s_4"><p>密码安全程度:</p><p><img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_4.jpg" />中</p></span>-->
        <?php 
            if($flag==TRUE){
                //第一次打开网页
                echo '请输入密码';
            }else if($form->error($model,'password')){
                echo '<img src="./assets/fronta/images/zc_3.jpg" style="vertical-align:middle;"/> '.$form->error($model,'password');
            }else{
        ?>
            <img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="vertical-align:middle;"/> 可以使用!
        <?php }?>
    </div>
   </div>
   
   <div class="zcnrl_2">
    <div class="zcnrl_3">
     <span class="s_1"><font style="color:#d02830">*</font> 重复密码:</span>
     <span class="s_2">
         <?php echo $form->textField($model,'password2',array('class'=>'inp_4'));?>
     </span>
    </div>
    <div class="zcnrl_4">
        <?php 
            if($flag==TRUE){
                //第一次打开网页
                echo '请再次输入密码';
            }else if($form->error($model,'password2')){
                echo '<img src="./assets/fronta/images/zc_3.jpg" style="vertical-align:middle;"/> '.$form->error($model,'password2');
            }else{
        ?>
            <img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="vertical-align:middle;"/> 可以使用!
        <?php }?>
    </div>
   </div>
   <div class="zcnrl_2">
    <div class="zcnrl_3">
     <span class="s_1"><font style="color:#d02830">*</font> 邮箱:</span>
     <span class="s_2">
         <?php echo $form->textField($model,'email',array('class'=>'inp_4'));?>
     </span>
    </div>
    <div class="zcnrl_4">
        <?php 
            if($flag==TRUE){
                //第一次打开网页
                echo '请输入邮箱';
            }else if($form->error($model,'email')){
                echo '<img src="./assets/fronta/images/zc_3.jpg" style="vertical-align:middle;"/> '.$form->error($model,'email');
            }else{
        ?>
        <img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="vertical-align:middle;"/> 邮箱可以使用!
            <?php }?>
    </div>
   </div>
   
   <div class="zcnrl_5">邮箱便于找回密码或账号</div>
   
   <div class="zcnrl_2">
    <div class="zcnrl_3">
     <span class="s_1"><font style="color:#d02830">*</font> 验证码:</span>
     <span class="s_5">
        <?php echo $form->textField($model, 'verifyCode',array('size'=>15,'class'=>'inp_5','maxlength'=>4,'style'=>'float:left')); ?>
        <!--显示验证码图片/使用小物件显示验证码-->
        <?php $this -> widget('CCaptcha',array('showRefreshButton'=>false,'clickableImage'=>true,'imageOptions'=>array('alt'=>'点击换图','title'=>'点击换图','style'=>'border:1px solid #ddd;margin-left:10px;cursor:pointer'))); ?>
    </div>
    <div class="zcnrl_4">
        <?php 
            if($flag==TRUE){
                //第一次打开网页
                echo '请输入验证码';
            }else if($form->error($model,'verifyCode')){
                echo '<img src="./assets/fronta/images/zc_3.jpg" style="vertical-align:middle;"/> '.$form->error($model,'verifyCode');
            }else{
        ?>
        <img src="<?php echo Yii::app()->request->baseUrl; ?>/assets/fronta/images/zc_2.jpg" style="vertical-align:middle;"/> 邮箱可以使用!
            <?php }?>
    </div>
       <script language="javascript">
        $(document).ready(function(){
            /*解决yii验证码不刷新*/
            var img = new Image;
                img.οnlοad=function(){
                    $('#yw0').trigger('click');
                }
                img.src = $('#yw0').attr('src');  //这段js解决yii验证码不刷新
        });
        </script>
   </div>
   
   <div class="zcnrl_6"><input name="" id="agreerule" type="checkbox" value="1" />我已阅读并同意<font style="color:#b60000;">网评如潮的规则</font></div>
   
   <div class="zcnrl_7">
       <a href="#"><input id="smit" name="" type="submit" value="" class="inp_6_gray"/></a>
   </div>
   
  </div>
     <script type="text/javascript">
        $(document).ready(function(){
            /*叛断用户是否点击同意协议*/
            $("#agreerule").bind('click',function(){
                if($(this).attr("checked")){
                    $("#smit").removeClass("inp_6_gray").addClass("inp_6");
                    $(this).val(2);
                }else{
                    $(this).val(1);
                    $("#smit").removeClass("inp_6").addClass("inp_6_gray");
                }
            });
            /*同意可以提交,不同意不能提交*/
            $("#smit").click(function(){
                if($('#agreerule').val()==2){
                    return true;
                }else{
                    return false;
                }
            });
            
        });
    </script>
  <div class="zc_right">
   <div class="zcnrr_1">
    <p>您已是会员,请直接登陆</p>
    <p style="margin:5px 0 0 15px;;"><a href="./index.php?r=member/login"><input name="" type="text" value="" class="inp_7"/></a></p>
   </div>
     
  <div class="zcnrr_2">
   <p>注册遇到问题,请联系客服:</p>
   <p style="color:#bd0913; font-size:16px; font-weight:bold;">400-400-40000</p>
  </div>
  
  </div>
 
 </div>
 <div class="zc_4"></div>
</div>
<?php $this->endWidget();?>

<div class="zc_foot">
  <div class="foot_1">
 <div style="margin-top:15px;">
  <span>
  <a href="#">关于我们</a> | <a href="#">联系方式</a> | <a href="#">帮助中心</a> | <a href="#">帮助中心</a> </span>
  <span style="margin-left:20px;">在线客服:400-4040-4040</span>
 </div>
 <div>
  联系人:俞小姐    联系电话:12345678    邮编:510000    公司地址:广东广州番禺市桥富华西路35号富华大夏    版权所有
 </div>
 </div>
</div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值