@DangerPro
Новичок в web-программировании

Как в Html::dropDownList вывести данные из Widget?

Подскажите как мне передать меню с категориями которые находятся в widget (называется MenuWidget).
Виджет у меня создает древовидное меню на основе БД, и генерирует html шаблон для вывода.
Мне нужно в dropDownList передать этот виджет с категориями, что бы реализовать массовый перенос статей. В любую из них я буду делать перенос и мне нужно знать в какую именно переносить. Соответственно нужен: Value(это поле 'id') и название категории('name').
<?=Html::beginForm(['posts/bulk'],'post',['class' => 'form-group']);?><br>
    <?=Html::dropDownList('action','',[c'=>'Confirmed',
                // Вот сюда нужно как то вывести
                ])?>
    <?=Html::submitButton('Сохранить', ['class' => 'btn btn-warning btn-xs',]);?><br><br>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            [ 'class' => yii\grid\CheckboxColumn::className(),],
            'id',
            'name',
            ...
            'description',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
    <?= Html::endForm();?>

Я передаю вот сюда вызов шаблона
<?=Html::dropDownList('action','',[ ''=>'Категория из меню: ',
        app\components\MenuWidget::widget(['tpl' => 'select_book', 'model' => $model])
])?>

Шаблон вывода категорий:
<option value="<?=$category['id'] ?>"
    <? if($category['id'] == $this->model->category_id) echo ' selected' ?>>
    <?=$tab . $category['name'] ?>
</option>
<?php if(isset($category['childs']) ): ?>
    <?=$this->getMenuHtml($category['childs'], $tab . '   - ') ?>
<?php endif;?>

При таком выводе получается:
<select class="form-control " name="action">
    <option value="0">
        <option value="1">Название 1</option>
        ...
        <option value="1">Название 10</option>
    </option>
</select>
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Вот Вам два примера из официальной документации
<?= Html::dropDownList('list', $currentUserId, ArrayHelper::map($userModels, 'id', 'name')) ?>
<?= Html::activeDropDownList($users, 'id', ArrayHelper::map($userModels, 'id', 'name')) ?>

Попробуйте так же передать модель своих категорий.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы