Ajaxlink And Cjuidialog

Hi Yii!!

[size=2]I have:[/size]

[size=2]- "[/size][color="#0000ff"][size=2]Projects[/size][/color][size=2]" module.[/size]

[size=2]- "[/size][color="#0000ff"][size=2]about[/size][/color][size=2]" site view.[/size]

i need an [color="#008000"]ajaxLink [/color]in the"[color="#0000ff"]about[/color]" view to open a [color="#008000"][font="Calibri, sans-serif"][size="2"]CJuiDialog [/size][/font][/color]with a create project form "[color="#00bfff"]_formDialog.php[/color]", so i solved it with this:

[color="#ff0000"]**Based on tutorial:[/color]

http://www.yiiframew…jaxsubmitbutton

[color="#00bfff"]protected/views/site/pages/about.php[/color]





......


$this->widget('application.components.BottomPostProjectWidget');


......




[color="#00BFFF"][size="2"]protected/components/BottomPostProjectWidget.php[/size][/color]







class BottomPostProjectWidget extendsCWidget {


   public function run() {


   	echo '<div class="bottom-post-project-widget"><divclass="inner">';


   	echo '<h5>Post your project</h5>';


   	echo '<div id="bottom-post-project-widget-link">';


   	echo CHtml::ajaxLink(


            	"Project form",


   			Yii::app()->createUrl('projects/projects/addnew'),


            	array(


   				'onclick'=>'$("#projectDialog").dialog("open");return false;',


   				'update'=>'#projectDialog'


            	),


            	array(


                	'id'=>'showProjectDialog',


                	'href' =>Yii::app()->createUrl('projects/projects/addnew'),


            	)


        	);


   	


   	echo '<div id="projectDialog"></div></div>';


   	echo '</div></div>';


   }


}


?>




[color="#00bfff"]protected/modules/projects/controller/ProjectController.php[/color]







public function actionAddNew() {


   		$model=new Projects;


        	// Ajax Validation enabled


   		$this->performAjaxValidation($model);


        	// Flag to know if we will renderthe form or try to add 


        	// new jon.


        	$flag=true;


        	if(isset($_POST['Projects'])){


   			$model->attributes=$_POST['Projects'];


   			$model->project_user=Yii::app()->user->data()->id;


   			$flag=false;


            	if($model->save()) {


   				$this->redirect(array('//projects/projects/view','id'=>$model->id));


   							}else {


   				Yii::app()->user->setFlash('error', '<strong>Ohsnap!</strong> Change a few things up and try submitting again.');


            	}


        	}


        	if($flag) {


   			Yii::app()->clientScript->scriptMap['jquery.js'] = false;


   			$this->renderPartial('createDialog',array('model'=>$model),false,true);


        	}


   	}




[color=#00BFFF][size=2]protected/modules/projects/controller/createDialog.php[/size][/color]







<?php 


$this->beginWidget('zii.widgets.jui.CJuiDialog',array(


            	'id'=>'projectDialog',


            	'options'=>array(


                	'title'=>'Post Project',


                	'autoOpen'=>true,


                	'modal'=>'true',


                	'width'=>'530',


                	'height'=>'491',


            	),


            	));


echo$this->renderPartial('_formDialog', array('model'=>$model)); ?>


<?php$this->endWidget('zii.widgets.jui.CJuiDialog');?>




[size="2"][color="#00bfff"]protected/modules/projects/views/projects/_formDialog.php[/color][/size]







<div class="form"id="projectDialogForm">


 


<?php /** @var BootActiveForm $form*/


   $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(


   	'id'=>'project-addnew-form',


   	'htmlOptions'=>array('class'=>'well'),


   	'type'=>'horizontal',


   	'enableAjaxValidation'=>true,


   )); 


?>


<fieldset>


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


                <?phpecho $form->errorSummary($model); ?>


   	<?php echo $form->textFieldRow($model, 'title',array('class'=>'span3')); ?>


   	<?php echo $form->textAreaRow($model, 'description',array('class'=>'span3', 'rows'=>3)); ?>


   <div class="control-group">


   	


   	<?php


        	echo CHtml::ajaxSubmitButton(


            	'Save',


   			CHtml::normalizeUrl(array('projects/projects/addnew','render'=>false)),


            	array(


                	'success'=>'js:function(data) {


   					$("#projectDialog").dialog("close");


                	}'


            	),


            	array(


                	'id'=>'closeProjectDialog',


                	'class'=>'btnbtn-primary'


            	)


        	);


   	?>


   </div>


    </fieldset>


 


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


 


</div>




[size="2"]And it works, when i click the [/size][color="#008000"][size="2"]ajaxLink [/size][/color][size="2"]open the [/size][size="2"][color="#008000"]CJuiDialog [/color][/size][size="2"]with the "[/size][color="#00bfff"][size="2"]_formDialog.php[/size][/color][size="2"]", and when i click on the "[/size][color="#0000ff"][size="2"]Save[/size][/color][size="2"]" button the new project is created. The problem is:[/size]

  • When a click the “[color=”#0000ff"]Save[/color]" button the [color="#008000"][font=“Calibri, sans-serif”][size=“4”]CJuiDialog [/size][/font][/color]don’t get closed neither redirect to the “localhost/myapp/projects/projects/view&id=17”

  • The ajax validation doesn’t work, i mean, when a field lost the focus this changes the color to green even if is empty or incorrect.

What’s wrong?

Thanks yii!!