Hola compañeros ya que es medio complicado implementar combos dependientes en el framework. les comparto el codigo trabajando.
Lo estoy implementando:
***********************
Modelo: CombosDependientes
Controlador: CombosDependientes
Vista: _form.php
Haciendo uso de los modelos:
****************************
Departamento:
codDepartamento
strDepartamento
Municipio:
codMunicipio
strMunicipio
codDepartamento
Corregimiento:
codCorregimiento
strCorregimiento
codMunicipio
codDepartamento
En el controlador:
En la vista:
El codigo trabaja perfecto
Lo estoy implementando:
***********************
Modelo: CombosDependientes
Controlador: CombosDependientes
Vista: _form.php
Haciendo uso de los modelos:
****************************
Departamento:
codDepartamento
strDepartamento
Municipio:
codMunicipio
strMunicipio
codDepartamento
Corregimiento:
codCorregimiento
strCorregimiento
codMunicipio
codDepartamento
En el controlador:
Código (php) [Seleccionar]
<?php
// Funcion para llenar combobox dependiente de lo que seleccione el usuario en Departamento/Municipio/Corregimiento
public function actionDynamicMunicipios()
{
$data = Municipio::model()->findAll('codDepartamento=:parent_id',
array(':parent_id'=>(int) $_POST['CombosDependientes']['codDepartamento']));
$data = CHtml::listData($data,'codMunicipio','strMunicipio');
echo CHtml::tag('option',array('value' => ''),'Seleccione un municipio...',true);
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
}
}
public function actionDynamicCorregimientos()
{
$data = Corregimiento::model()->findAll('codMunicipio=:parent_id',
array(':parent_id'=>(int) $_POST['CombosDependientes']['codMunicipio']));
$data = CHtml::listData($data,'codCorregimiento','strCorregimiento');
echo CHtml::tag('option',array('value' => ''),'Seleccione un corregimiento...',true);
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
}
}
?>
En la vista:
Código (php) [Seleccionar]
<!-- INICIO COMBOS DEPENDIENTES -->
<div class="row">
<?php echo $form->labelEx($model,'Departamento'); ?>
<?php
$departamento = new CDbCriteria;
$departamento->order = 'strDepartamento ASC';
?>
<?php
echo $form->dropDownList($model,'codDepartamento',CHtml::listData(Departamento::model()->findAll($departamento),'codDepartamento','strDepartamento'),
array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('CombosDependientes/dynamicMunicipios'),
'update' => '#CombosDependientes_codMunicipio'
),'prompt' => 'Seleccione un Departamento...'
)
);
?>
<?php echo $form->error($model,'codDepartamento'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Municipio'); ?>
<?php
$municipio = new CDbCriteria;
$municipio->order = 'strMunicipio ASC';
?>
<?php
echo $form->dropDownList($model,'codMunicipio',CHtml::listData(Municipio::model()->findAll($municipio),'codMunicipio','strMunicipio'),
array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('CombosDependientes/dynamicCorregimientos'),
'update' => '#CombosDependientes_codCorregimiento'
),'prompt' => 'Seleccione un Municipio...'
)
);
?>
<?php echo $form->error($model,'codMunicipio'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Corregimiento'); ?>
<?php echo $form->dropDownList($model,'codCorregimiento',array('Seleccione un Corregimiento...'));?>
<?php echo $form->error($model,'codCorregimiento'); ?>
</div>
<!-- FIN COMBOS DEPENDIENTES -->
El codigo trabaja perfecto