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