construccion en el formulario: <?= $form->field($model, 'id_sector')->dropDownList(ArrayHelper::map(Sectores::find()->orderBy('nombre_sector')->all(), 'id_sector', 'nombre_sector'), ['prompt' => 'Seleccione ', 'id' => 'id-sector','onchange' => 'actualizarEntes(value)']); ?> </div> <div class="col-xs-3"> <?php /*$form->field($model, 'id_ente')->widget(Select2::classname(), [ 'model' => $model, 'attribute' => 'id_ente', 'data' => ArrayHelper::map(Entes::find()->orderBy('nombre_ente')->asArray()->all(), 'id_ente', 'nombre_ente'), 'language' => 'es', 'maintainOrder' => true, 'showToggleAll'=> false, 'readonly'=>true, 'options' => ['placeholder' => 'Seleccione...', 'multiple' => true,], 'pluginOptions' => [ 'maximumSelectionLength'=>35, 'minimumInputLength'=>0, ], ]);*/ ?> <?= $form->field($model, 'id_ente')->widget(DepDrop::classname(), [ 'type' => DepDrop::TYPE_SELECT2, 'data' => [], // Inicialmente vacío 'options' => ['placeholder' => 'Seleccione...', 'multiple' => true], 'pluginOptions' => [ 'depends' => ['id-sector'], // ID del campo del que depende 'url' => Url::to(['/entes/listar']), // URL para obtener los datos dependientes 'loadingText' => 'Cargando entes...', ], ]); ?> </div> </div> en el modelo de la tabla que voy a mostrar en el DepDrop: public static function Lista(){ $s = \yii\helpers\ArrayHelper::map(Entes::find()->orderBy('id_ente')->all(),'id_ente','nombre_ente'); return ($s) ? $s : []; } en la action update del controlador: public function actionUpdate($id) { $model = $this->findModel($id); // Carga los datos de 'indicadores_entes' en el modelo $model->id_ente = ArrayHelper::map($model->entes, 'id_ente', 'nombre_ente'); if ($model->load(Yii::$app->request->post())) { // Desvincula todos los 'entes' existentes para evitar duplicados $model->unlinkAll('entes', true); // Guarda los nuevos valores seleccionados en la tabla de relación foreach ($model->id_ente as $enteId) { $ente = Entes::findOne($enteId); $model->link('entes', $ente); } if ($model->save()) { return $this->redirect(['view', 'id' => $model->id_indicador]); } } return $this->render('update', [ 'model' => $model, ]); } en la action create : public function actionCreate() { $model = new Indicadores(); if ($model->load(Yii::$app->request->post())) { if ($model->save()) { // Obtén los valores seleccionados del campo 'id_ente' $entesSeleccionados = Yii::$app->request->post('Indicadores')['id_ente']; // Guarda los valores seleccionados en la tabla de relación foreach ($entesSeleccionados as $enteId) { $ente = Entes::findOne($enteId); $model->link('entes', $ente); } return $this->redirect(['view', 'id' => $model->id_indicador]); } } return $this->render('create', [ 'model' => $model, ]); }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter