我有一个关于以yii形式显示错误的问题。
$custom_user->attributes = $_POST['CustomUser'];
if($custom_user->validate())
{
...
save
...
}
else
{
$custom_user->addError('username', 'Error X');
$this->redirect(array('access/index'),
array('user'=>$custom_user,
'tab'=>$tab_person,
));
}
<?php $form=$this->beginWidget('BaseForm', array(
'id'=>'user-form',
'action'=>Yii::app()->createUrl('person/createUser'))); ?>
<?php echo $form->errorSummary($user);?>
<div class="right">
<?php echo $form->textField($user,'username',array('size'=>30,'maxlength'=>255)); ?>
<br/><?php echo $form->error($user,'username'); ?>
</div>
...
...
<div style="float: left;">
<?php echo $form->dateField($user,'valid_from',null,'valid_from_formated'); ?>
<br/><?php echo $form->error($user,'valid_from'); ?>
</div>
public $enableClientValidation = true;
public $enableAjaxValidation = true;
public $clientOptions = array( 'hideErrorMessage'=>false,
'validateOnSubmit'=>true,
'validateOnChange'=>false,
'validateOnType'=>false,
'afterValidateAttribute' => 'js:enableSubmitAV',
'afterValidate' => 'js:submitFormAV'); // always fires this after
“$形式 - &GT; errorSummary($用户);”是空的 并且注意到显示在“$ form-&gt;错误($ user,'username');”
下但如果我查看Firebug,我可以在“响应”标签下看到:
{“CustomUser_valid_until”:[“有效期至必须 大于\“20121127 \”。“]}
这是一件好事,因为这意味着我的规则很有效。但是没有显示任何错误。不是这一个,甚至我在控制器中添加的错误“错误X”都没有显示...(我确定我通过了else语句,我试过了。)
那么,有没有人有想法?
感谢您阅读我并抱歉我的大概英语。
祝你有个美好的一天:)
迈克尔
答案 0 :(得分:1)
您正在重定向,这意味着调用了一个全新的请求,并删除了任何响应。
为什么要重定向到“访问/索引”而不是仅调用视图?如果你确实需要重定向,你肯定可以尝试设置一个flash变量,因为它存储在浏览器的会话中,并将通过重定向保持:
Yii::app()->user->setFlash('username', "Error X");
然后在访问/索引页面上:
<?php if(Yii::app()->user->hasFlash('username')):?>
<div class="error">
<?php echo Yii::app()->user->getFlash('username'); ?>
</div>
<?php endif; ?>
答案 1 :(得分:0)
好吧最后我弄错了。这是我的CActiveForm中的配置。选项“enableAjaxValidation”似乎在“true”时出现问题。我不知道为什么,但我已经有了登录表格的问题。我会尝试解决这个问题。