在yii中进行错误验证后保持在同一页面上

时间:2014-03-11 10:49:21

标签: php yii

我想在错误验证后避免重定向。

我显示了帖子列表,用户可以在点击按钮后发表评论。

这会在选择的帖子下显示评论表。

如果评论验证出错,我想留在页面上并在错误字段旁边显示错误(默认情况下)。

以下是我对该评论的控制器操作

public function actionCreate()
    {
        $model=new Comment;

        if(isset($_POST['Comment']))
        {
            $model->attributes=$_POST['Comment'];

            if($model->save()) {
                $this->redirect(Yii::app()->request->urlReferrer);

            } else {

                 Yii::app()->end();

            }
        }

        $this->render('create',array(
            'model'=>$model,
        ));
    }

和视图

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'comment-form',
    'enableClientValidation'=>true,
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

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

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form --> 

目前,使用Yii :: app() - &gt; end();它显示一个空白页面,如果我在else部分没有做任何事情,那么它会继续并显示创建视图(失去一些装饰)

---添加更多信息

实际上,我在页面中的内容是

Post 1
(Comment form)
Commment  :   ........
Save

Post 2

Post 3

当我点击保存而不发表评论时,我想留在这个页面中,让用户可以看到错误的位置(缺少评论)并再次保存。

你能告诉我我的错误在哪里吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

<\ n>在else块中你必须告诉yii再次渲染同一页面。在调用$ model-&gt; save()后,您会在模型中收到错误。所以在Yii :: app() - &gt; end()之前;调用页面渲染$ this-&gt; render('create',array('model'=&gt; $ model,));

相关问题