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!!