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:
<?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:
<!-- 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 :D
pues... no discutire la forma en que trabajas con Yii, no lo he usado a fondo pero.. por que llamas al modelo en una vista? x_X
supongo que lo estas haciendo en base a este tutorial :xD
http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown/
no veo nada distinto mas que el replace :P perdona que no lo compruebe yo mismo pero me gustan mas otros frameworks xD
ya lo solucione yo solo ::) A proposito compa, en que desarrollas, Kumbia, Cake, Zend ???....
codeigniter, fuel, doophp, a veces zend :) +jquery hardcoded xD
Hola amigo, estoy probando tu codigo pero el mismo no me funciona, te anexo mi codigo a ver si me puedes ayudar.
Lo estoy implementando:
***********************
Modelo: Institucion
Controlador: InstitucionController
Vista: _form.php
_form.php
<?php
// Funcion para llenar combobox dependiente de lo que seleccione el usuario en Estado/Municipio/Parroquia
<!-- INICIO COMBOS DEPENDIENTES -->
<div class="row">
<?php echo $form->labelEx($model,'Estado'); ?>
<?php
$estado = new CDbCriteria;
$estado->order = 'nombre_estado ASC';
?>
<?php
echo $form->dropDownList($model,'id_estado',CHtml::listData(estado::model()->findAll($estado),'id_estado', 'nombre_estado'),
array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('InstitucionController/actionDynamicMunicipios'),
'update' => '#InstitucionController_id_municipio'
) ,'prompt' => 'Seleccione un estado..'
)
);
?>
<?php echo $form->error($model,'id_estado'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Municipio'); ?>
<?php
$municipio = new CDbCriteria;
$municipio->order = 'Nombre_Municipio ASC';
?>
<?php
echo $form->dropDownList($model,'id_municipio',CHtml::listData(municipio::model()->findAll($municipio),'id_municipio','nombre_municipio'),
array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('CombosDependientes/dynamicCorregimientos'),
'update' => '#InstitucionController_id_parroquia'
),'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,'id_parroquia',array('Seleccione un Corregimiento...'));?>
<?php echo $form->error($model,'id_parroquia'); ?>
</div>
<!-- FIN COMBOS DEPENDIENTES -->
?>
InstitucionController.php
public function actionDynamicMunicipios()
{
$data = Municipio::model()->findAll('codDepartamento=:parent_id',
array(':parent_id'=>(int) $_POST['Institucion']['id_estado']));
$data = CHtml::listData($data,'id_Municipio','nombre_Municipio');
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['Institucion']['id_municipio']));
$data = CHtml::listData($data,'id_parroquia','nombre_parroquia');
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);
}
}
Gracias buen amigo ya encontre la solucion.. un abrazo
Hola, alguien me podria ayudar con yii dramework?
Cita de: tamayo461 en 7 Junio 2012, 05:23 AM
Hola, alguien me podria ayudar con yii dramework?
Yo puse dos manuales en el foro para que comiences.
http://foro.elhacker.net/php/manual_01_para_aprender_yii_framework_conceptos_basicos_e_instalacion-t342572.0.html