yii-dream-team / yii2-jstree

Yii2 jsTree component
http://yiidreamteam.com/yii2/jstree
30 stars 7 forks source link

Передача id узла из представления #2

Closed gglp closed 9 years ago

gglp commented 9 years ago

Добрый день.

Подскажите, пожалуйста, как можно передать из представления id узла, по которому нужно загрузить потомков?

В представлении я вставил такой код виджета:

<?= \yiidreamteam\jstree\JsTree::widget([
    'containerOptions' => [
        'class' => 'data-tree',
    ],
    'jsOptions' => [
        'core' => [
            'multiple' => false,
            'data' => [
                'url' => \yii\helpers\Url::to(['tag/childs']),
            ],
        ],
    ]
]) ?>

В контроллере TagController такой код action'а:

    public function actionChilds($id){
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $model = $this->findModel($id);
        return $model->nodes;
    }

При отображении страницы выдаётся ошибка: Bad Request (#400): Missing required parameters: id

gglp commented 9 years ago

Нашёл решение :)

В представлении в вызове виджета надо добавить параметр data и в нём передать js-функцию:

    <?= \yiidreamteam\jstree\JsTree::widget([
    'containerOptions' => [
        'class' => 'data-tree',
    ],
    'jsOptions' => [
        'core' => [
            'multiple' => false,
            'data' => [
                'url' => \yii\helpers\Url::to(['tag/childs']),
                'data' => new \yii\web\JsExpression('function (node) {return {\'id\': node.id};}'),
            ],
        ],
    ]
]) ?>
metalagman commented 9 years ago

Надо будет добавить в примеры