我使用Yii框架來創建一個非常簡單的1文本區域字段和2個隱藏的輸入,其中包含從服務器發送的預定義值。無限循環試圖驗證/保存
它應該工作的方式是預期,我的意思是,你寫在文本區域的東西,你點擊發送按鈕。進行ajax驗證(只對文本區域必須是不應該爲空的),如果驗證,則保存數據並重定向到其他頁面。
問題是,如果驗證錯誤被觸發,它不會保存任何數據。
我的意思是,如果我進入頁面,寫一些東西,然後點擊發送按鈕,數據將被保存,我將被正確重定向。但是如果我進入頁面,按發送按鈕(無需在文本區域中輸入任何內容),等待出現錯誤(請注意,這是通過ajax完成的,所以在這裏沒有頁面重新加載),寫一些東西並點擊再次發送 Yii將在無限循環中的請求之後開始發出請求。
我已經檢查了正在發送的數據,並且一切正常(數據和動作url)。
這裏是我的控制器代碼
public function actionView($id)
{
$user = Usuario::model()->findByAttributes(
array(
'nick'=>Yii::app()->user->getId()
)
);
$dataProvider=new CActiveDataProvider('Mensaje', array(
'criteria'=>array(
'with'=>array('usuario', 'usuario.detallesusuario'),
'condition'=>'Tema_idtema='.$id
),
'pagination'=>array(
'pageSize'=>1000,
),
));
$this->render('view',array(
'model'=>$this->loadModel($id),
'usuario_id'=>$user->idusuario,
'tema_id'=>$id,
'dataProvider'=>$dataProvider,
));
}
public function actionCreateMessage(){
$model=new Mensaje;
$this->performAjaxValidation($model);
if(isset($_POST['Mensaje']))
{
$model->attributes=$_POST['Mensaje'];
$model->fecha_hora=new CDbExpression('NOW()');
$model->save();
$this->redirect(array('view', 'id'=>$model->Tema_idtema));
}
}
,在View
<?php
$model = new Mensaje();
echo $this->renderPartial('_mensaje_form', array(
'model'=>$model,
'usuario_id'=>$usuario_id,
'tema_id'=>$tema_id,
),
false, //return instead of echo
true //post-process
);
?>
這裏是 「_mensaje_form」 代碼
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'mensaje-form',
'action'=>CHtml::normalizeUrl(array('tema/createMessage')),
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange'=>false,
'validateOnType'=>false,
),
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row" style="margin:20px 5px 0 176px;">
<?php echo $form->labelEx($model,'mensaje'); ?>
<?php echo $form->textArea($model,'mensaje',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($model,'mensaje'); ?>
<?php echo $form->hiddenField($model, 'Tema_idtema', array('value'=>$tema_id)); ?>
<?php echo $form->hiddenField($model, 'Usuario_idusuario', array('value'=>$usuario_id)); ?>
</div>
<div class="row buttons" style="margin:-3px 0 -8px 176px;">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Responder' : 'Guardar'); ?>
</div>
<?php $this->endWidget(); ?>
任何想法,爲什麼我得到的代碼那個循環?
我已經有'真'作爲我的觀點中的最後一個參數。 – alexandernst
徹底刪除該參數(暫時)並嘗試。 – SuVeRa
你是對的!這是造成錯誤!非常感謝! :) – alexandernst