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>