ejemplo de campo estado, municipio, parroquia
Wed Oct 23 2024 14:23:07 GMT+0000 (Coordinated Universal Time)
Saved by @jrg_300i #undefined
<div class="col-xs-4" style="display: none;" id='id_estado'>
<?= $form->field($model, 'id_estado')->dropDownList(ArrayHelper::map(Estados::find()/*->where(['id_municipio'=> 2])*/->orderBy('desc_estado')->all(), 'id_estado', 'desc_estado'), ['prompt' => 'Seleccione ', 'id' => 'id-estado']); ?>
</div>
<div class="col-xs-4" style="display: none;" id='id_municipio'>
<?= $form->field($model, 'id_municipio')->widget(DepDrop::classname(), [
'options' => ['id' => 'id-ubicacion'],
'data' => $model->isNewRecord ? [] : ArrayHelper::map(Municipios::find()->where([ 'id_estado'=>$model->id_estado])->orderBy('desc_municipio')->asArray()->all(), 'id_municipio', 'desc_municipio'),
// ensure at least the preselected value is available
'pluginOptions' => [
'depends' => ['id-estado'],
// the id for cat attribute
'placeholder' => 'Seleccione un municipio...',
'url' => Url::to(['municipios/listar'])
]
]);
?>
</div>
<div class="col-xs-4" style="display: none;" id='id_parroquia'>
<?= $form->field($model, 'id_parroquia')->widget(DepDrop::classname(), [
//'options'=>['id'=>'co_art_'.$regla->cod_linea.''],
'data' => $model->isNewRecord ? [] : ArrayHelper::map(Parroquias::find()->where(['id_municipio'=>$model->id_municipio])->orderBy('desc_parroquia')->asArray()->all(), 'id_parroquia', 'desc_parroquia'),
// ensure at least the preselected value is available
'pluginOptions' => [
'depends' => ['id-ubicacion'],
// the id for cat attribute
'placeholder' => 'Seleccione una parroquia...',
'url' => Url::to(['parroquias/listar'])
]
]);
?>
</div>
controlador municipio
public function actionListar() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$dep_id = $parents[0];
//$hoy = date('Y-m-d');
//$out = self::getSubCatList($cat_id);
$out = \yii\helpers\ArrayHelper::toArray(Municipios::find()->where([ 'id_estado'=>$dep_id])->orderBy('desc_municipio')->all(), 'id_municipio', 'desc_municipio');
$response = array();
foreach ($out as $row) {
$arr['id'] = trim($row['id_municipio']);
$arr['name'] = trim($row['desc_municipio']);
array_push($response, $arr);
}
echo \yii\helpers\Json::encode(['output'=>$response, 'selected'=>'']);
return;
}
}
echo Json::encode(['output'=>'', 'selected'=>'']);
}
controlador parroquia
public function actionListar() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
//var_dump($parents); die();
if ($parents != null) {
$dep_id = $parents[0];
//para que se pueda cargar la parroquia en blanco, mientras no sea seleccionado un municipio
if($dep_id == ""){
echo \yii\helpers\Json::encode(['output'=>'', 'selected'=>'']);
return;
}
//$hoy = date('Y-m-d');
$out = yii\helpers\ArrayHelper::toArray(Parroquias::find()->where(['id_municipio'=>$dep_id])->orderBy('desc_parroquia')->all(), 'id_parroquia', 'desc_parroquia');
$response = array();
foreach ($out as $row) {
$arr['id'] = trim($row['id_parroquia']);
$arr['name'] = trim($row['desc_parroquia']);
array_push($response, $arr);
}
echo \yii\helpers\Json::encode(['output'=>$response, 'selected'=>'']);
return;
}
}
echo \yii\helpers\Json::encode(['output'=>'', 'selected'=>'']);
}
___________________otro ejemplo usando el modelo del mismo archivo este ejemplo es mas sencillo por que no hay que ponerle la condicion en data como en el ejemplo anterior
<div class="row">
<div class="col-xs-1"></div>
<div class="col-xs-3">
<?= $form->field($model, 'id_estado')->dropDownList(ArrayHelper::map(Estados::find()->orderBy('desc_estado')->all(), 'id_estado', 'desc_estado'), ['prompt' => 'Seleccione un estado', 'id' => 'id-estado']); ?>
</div>
<div class="col-xs-3">
<?= $form->field($model, 'id_municipio')->widget(DepDrop::classname(), [
'options' => ['id' => 'id-municipio'],
'data' => [$model->id_municipio => $model->municipio],
// ensure at least the preselected value is available
'pluginOptions' => [
'depends' => ['id-estado'],
// the id for cat attribute
'placeholder' => 'Seleccione un municipio...',
'url' => Url::to(['municipios/listar'])
]
]);
?>
</div>
<div class="col-xs-3">
<?= $form->field($model, 'id_parroquia')->widget(DepDrop::classname(), [
//'options'=>['id'=>'co_art_'.$regla->cod_linea.''],
'data' => [$model->id_parroquia => $model->Parroquia],
// ensure at least the preselected value is available
'pluginOptions' => [
'depends' => ['id-municipio'],
// the id for cat attribute
'placeholder' => 'Seleccione una parroquia...',
'url' => Url::to(['parroquias/listar'])
]
]);
?>
</div>
</div>
depues colocar esto en el modelo solamente este ejemplo es mas sencillo que el anterior
public function getMunicipio(){
if($this->id_municipio):
$p = Municipios::findOne(['id_municipio'=>$this->id_municipio]);
if ($p):
$p = $p->desc_municipio;
endif;
else:
$p = "";
endif;
return $p;
}
public function getParroquia(){
if($this->id_parroquia):
$p = Parroquias::findOne(['id_parroquia'=>$this->id_parroquia]);
if ($p):
$p = $p->desc_parroquia;
endif;
else:
$p = "";
endif;
return $p;
}



Comments