depDrop не подтягивает значения второго поля

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
wiaim
Сообщения: 14
Зарегистрирован: 2016.09.25, 22:32

depDrop не подтягивает значения второго поля

Сообщение wiaim »

Доброго времени суток.
Проблема с выводом данных в зависимую форму. Пользуюсь depDrop widget. При выборе поля первого поля, второе поле бездействует.
Прошу помочь пожалуйста.

VIEW:

Код: Выделить всё

use yii\bootstrap\Html;
use yii\widgets\ActiveForm;
use yii\helpers\ArrayHelper;
use app\models\Games;
use kartik\depdrop\DepDrop;

<?php $form = ActiveForm::begin(); ?>
        <?= $form->field($games, 'id')
            ->dropDownList(
                ArrayHelper::map(Games::find()->all(), 'id', 'name'),
                ['prompt'=>'Выберите игру']
            );
        ?>
        <?= $form->field($servers, 'name')->widget(DepDrop::classname(), [
                'options' => ['id' => 'name'],
                'pluginOptions' => [
                        'depends' => ['id'], //тут должен писаться id родительской таблицы, я правильно понял?(Или id род.таблицы в дочерней таблице?)
                        'placeholder' => 'hello from servers',
                        'url' => \yii\helpers\Url::to(['servers/servers'])
                ]
        ]);
        ?>


        <?php ActiveForm::end(); ?>
CONTROLLER: (функции находятся в разных контроллерах, важно ли это?)

Код: Выделить всё

public function actionIndex()
    {
        $games = new Games();
        $servers = new Servers();
        $customer = new Customer();
        return $this->render('index', ['games' => $games, 'servers' => $servers, 'customer' => $customer]);
    }

Код: Выделить всё

public function actionServers()
    {
        $out = [];
        if (isset($_POST['depdrop_parents'])) {
            $parents = $_POST['depdrop_parents'];

            if ($parents != null) {
                $game_id = $parents[0];
                $out = \app\models\Servers::gelServerList($game_id);
                echo Json::encode(['output'=>$out, 'selected'=>'']);
                return;
            }
        }
        echo Json::encode(['output'=>'', 'selected'=>'']);
    }
MODEL:

Код: Выделить всё

public static function gelServerList($game_id)
    {
        $query = self::find()
            ->where(['game' => $game_id, 'is_show' => 1])
            ->select(['id', 'name'])->asArray()->all();

        return $query;
    }
Последний раз редактировалось wiaim 2017.01.24, 21:24, всего редактировалось 1 раз.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: depDrop не подтягивает значения второго поля

Сообщение chungachguk »

'depends' => ['id'], //тут должен писаться id родительской таблицы, я правильно понял?(Или id род.таблицы в дочерней таблице?)
тут должен быть html аттрибут id родительского выпадающего списка
wiaim
Сообщения: 14
Зарегистрирован: 2016.09.25, 22:32

Re: depDrop не подтягивает значения второго поля

Сообщение wiaim »

Ребята, поставил id родительской формы

Код: Выделить всё

<?= $form->field($games, 'id')
            ->hiddenInput(['id' => 'game_id'])
            ->dropDownList(
                ArrayHelper::map(Games::find()->all(), 'id', 'name'), 
                ['prompt'=>'Выберите игру']    // options
            );
        ?>
        <?= $form->field($servers, 'id')->widget(DepDrop::classname(), [
                'options' => ['id' => 'name'],
                'pluginOptions' => [
                        'depends' => ['game_id'],
                        'placeholder' => 'hello from servers',
                        'url' => \yii\helpers\Url::to(['servers/servers'])
                ]
        ]);
        ?>
Но ничего не получается, выводятся 2 формы, из одной выбираются значения, вторая форма не реагирует
Закрыто