gnekkala
(Ngprasad20)
February 22, 2011, 6:12am
1
Hi,
I am displaying question & answers with timer. When I click on ‘Save and Continue’ I need to display next question without reloading the timer. For that I am using renderPartial. But it is reloading the complete page.Please review the attached render and render partial images.Could you please help me. My code is
Render code
$model=new ExamForm;
$qdata = Questions::getQuestion();
$this->render('exam',array('model'=>$model,'qdata'=>$qdata));
Render Partial code
$model=new ExamForm;
$qdata = Questions::getQuestion();
$this->renderPartial('exam',array('model'=>$model, 'qdata'=>$qdata), false,true);
View file code
<?php
$cs=Yii::app()->clientScript;
$cs->registerScriptFile(Yii::app()->baseUrl . '/js/jquery-1.4.4.pack.js', CClientScript::POS_HEAD);
$cs->registerScriptFile(Yii::app()->baseUrl . '/js/jquery.countdown.js', CClientScript::POS_HEAD);
$cs->registerScriptFile(Yii::app()->baseUrl . '/js/countdown.js', CClientScript::POS_HEAD);
$cs->registerCssFile(Yii::app()->baseUrl . '/css/jquery.countdown.css');
?>
<div id="defaultCountdown"></div>
<div> </div>
<div class="form" id="exam-grid">
<?php $form=$this->beginWidget('CActiveForm'); ?>
<h3 class="question-title">Question <?php echo $model->minQN ;?> of <?php echo $model->maxQN ;?></h3>
<div class="row">
<input type="hidden" name="question" value="<?php echo $qdata["id"]?>" />
<?php echo "<h2>".$qdata['question']."</h2>";?>
</div>
<div class="row compactRadioGroup">
<input type="hidden" name="question" value="<?php echo $qdata["id"]?>" />
<?php echo CHtml::radioButtonList('answers','',Answers::getAnswers($qdata['id']));?>
</div>
<div class="row" align="center">
<?php
echo CHtml::ajaxLink(
'Save and Continue',
Yii::app()->createUrl("exam/next"),
array("update" => "#exam-grid","type"=>"POST"),
array("href" => Yii::app()->createUrl("exam/next"))
);
?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
1290
1291
Thanks & regards,
Gangadhar
zaccaria
(Matteo Falsitta)
February 22, 2011, 6:58am
2
For reload a part of page you should use an ajax link.
The action that answer to the ajax request will do renderpartial.
About timer, I think is better to save it server side and not rely on the timer the user sends you.
I would double check your render and renderPartial. The problem is that you render twice the same view, it is normal that you actually view twice…
I will do this:
render—> exam
within exam there is a variable within that you fill from your controller (the first time only) having the return of a renderPartial calling a _question view file
exam/next on your controller should renderPartial _question…
gnekkala
(Ngprasad20)
February 22, 2011, 8:31am
4
Thanks Antonio Ramirez. It is working now.
gnekkala
(Ngprasad20)
February 25, 2011, 6:16am
5
I have another problem. Can you help me.
In render view, I am displaying timer. In render partial view, I am displaying questions and answers. After completing the questions and answers redirecting to ‘complete’ action in same controller. Controller action is working but the view is displaying in place of render partial view. View is not displaying in full page even URL also not changing.
For redirect my code is
$this->redirect('complete');
Tried also
$this->redirect('exam/complete');
1313
Thanks,
Gangadhar
gusnips
(Gustavo)
February 26, 2011, 3:40pm
6
So the layout doesn’t render twice check it its an ajax request
Yii::app()->request->isAjaxRequest
and if it is use renderPartial or set
$this->layout=false
in the controller
And yes, for ajax requests page url wont change
zaccaria
(Matteo Falsitta)
February 26, 2011, 7:40pm
7
The redirect doesn.t work for ajax request, you should use a normal link (non ajax) for complete button.
gusnips
(Gustavo)
February 26, 2011, 7:46pm
8
What you could do too is to send back in the response some json and check if needs a redirect, instead of using header(redirect), like
success:function(data){
if(data.url){
window.location=data.url;
}
}
I didn’t say before because I wasn’t sure about the question …
hi gustavo
i’m new in yii and i’m trying to do a profile manager like yours
can you give-me a little help?
gusnips
(Gustavo)
April 27, 2011, 1:56pm
10
Hi Daniel
It wasn’t me who was developing it, It was gnekkala . I just answered his question.
You can ask him or create a new post for each doubt you have.
Cheers
yeah, sorry
I was sleeping when I asked xD