I can validate my form in a dialog box?.
when I press save, the form does not validate the data and closes. as I can do to validate the data and closes the dialog if validated properly.
my controller
public function actionIndex()
{
$modelo=new PrThocc;
$model=new PrTpeho('search');
$this->performAjaxValidationn($modelo);
$model->unsetAttributes(); // clear any default values
if(isset($_GET['PrTpeho']))
$model->attributes=$_GET['PrTpeho'];
if(isset($_POST['PrThocc']))
{
$modelo->attributes=$_POST['PrThocc'];
if($modelo->validate()){
$modelo->save();
}
}
$this->render('index',array(
'model'=>$model,
'modelo'=>$modelo,
));
}
protected function performAjaxValidationn($modelo)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='pr-thocc-form')
{
echo CActiveForm::validate($modelo);
Yii::app()->end();
}
}
my _form
<?php
/* @var $this PrthoccsController */
/* @var $model PrThocc */
/* @var $form CActiveForm */
?>
<div class="span5">
<div class="form-horizontal well">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'pr-thocc-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<p class="note">Los Campos con <span class="required">*</span> son necesarios.</p>
<?php if ($form->errorSummary($model)) { ?>
<div class='alert alert-error'>
<?php echo $form->errorSummary($model); ?>
</div>
<?php }?>
<?php echo $form->hiddenField($model,'peho_codi'); ?>
<?php echo $form->error($model,'peho_codi'); ?>
<div class="control-group">
<?php echo $form->labelEx($model,'ceco_codi',array('class'=>'control-label')); ?>
<div class="controls">
<?php
echo CHtml::hiddenField('PrThocc[ceco_codi]',$model->ceco_codi);
$ceco_nom="";
if (!$model->isNewRecord ){
$ceco=GeTceco::model()->findByPk($model->ceco_codi);
$ceco_nom=$ceco->ceco_nomb;
}
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'name'=>'ceco_codi',
'value'=>$ceco_nom,
'source'=>CController::createUrl('/Presencias/Getcecos/toAutocomplete'),
'options'=>array(
'showAnim'=>'fold',
'minLength'=>'2',
'select'=>'js:function( event, ui ) {
$("#ceco_codi").val( ui.item.label );
$("#PrThocc_ceco_codi").val( ui.item.id );
return false;
}',
),
'htmlOptions'=>array(
'onfocus' => 'js: this.value = null; $("#ceco_nomb").val(null); $("#PrThocc_ceco_codi").val(null);',
'class' => 'input search-query',
'placeholder' => "Buscar...",
),
)
);
?>
<?php echo $form->error($model,'ceco_codi'); ?>
</div>
</div>
<div class="control-group">
<?php echo $form->labelEx($model,'hocc_hors',array('class'=>'control-label')); ?>
<div class="controls">
<?php echo $form->textField($model,'hocc_hors'); ?>
<?php echo $form->error($model,'hocc_hors'); ?>
</div>
</div>
<div class="control-group">
<?php echo $form->labelEx($model,'esta_codi',array('class'=>'control-label')); ?>
<div class="controls">
<?php echo $form->dropDownList($model,'esta_codi', GeTesta::toDownListA(),array('prompt' => 'Seleccione un Estado...')); ?>
<?php echo $form->error($model,'esta_codi'); ?>
</div>
</div>
<div class="control-group buttons">
<div class="controls">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Agregar' : 'Guardar',array('class'=>'btn btn-primary')); ?>
<?php if ($model->isNewRecord) {
echo CHtml::link('Cancelar',array('/Presencias/prtpehos/index'),array('class'=>'btn'));
}
else {
echo CHtml::link('Cancelar',array('/Presencias/prtpehos/view/id/'.$model->peho_codi),array('class'=>'btn'));
}
?>
<?php ?>
</div>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
and my index
<?php
$this->widget('bootstrap.widgets.TbGridView', array(
'type'=>'striped bordered condensed',
'id'=>'pr-tpeho-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'peho_codi',
array('name'=>'pers_auxi','value'=>'$data->getpers->Nombre','type'=>'text',),
'peho_feci',
'peho_hori',
array('name'=>'insi_codi','value'=>'$data->prtinsi->insi_nomb','type'=>'text',),
'peho_fecs',
/*
'peho_hors',
'peho_dia',
'peho_tcap',
'peho_jorn',
'esta_codi',
*/
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'header'=>'Opciones',
'template'=>'{view} {update} {delete} {proceso}',
'header'=>'Opciones',
'headerHtmlOptions' => array('style' => 'text-align: center; width: 80px'),
'buttons'=>array(
'proceso' => array(
'label'=>'Proceso',
'icon' => 'icon-plus',
'click' =>'js:function(){
$("#PrThocc_peho_codi").val($(this).parent().parent().children(":nth-child(1)").text());
$("#cru-dialog").dialog("open");addClassroom(); return false;}',
),
'delete'=> array(
'visible'=>'false',
),
),
),
),
)); ?>
</div>
<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
'id'=>'cru-dialog',
'options'=>array(
'align'=>'center',
'title'=>'Agregar Horas',
'width'=>540,
'heigth'=>300,
'resizable'=>false,
'modal'=>true,
'overlay'=>array('backgroundColor'=>'#000','opacity'=>'0.5'),
'autoOpen'=>false,
//'close'=>'js:function(e,o){location.reload();}',
'show'=>array(
'effect'=>'blind',
'duration'=>100,
),
'hide'=>array(
'effect'=>'explode',
'duration'=>100,
),
),
));
echo $this->renderPartial('/prthoccs/_form',array('model'=>$modelo),false,true);
$this->endWidget('zii.widgets.jui.CJuiDialog'); ?>
I should do?
PD: sorry for my english, I’m learning.