@kat-vetal

Вывод таблицы в виде дерева?

есть таблица которая выводится вот так
<?php Pjax::begin(); ?>
    <?= GridView::widget([
        'filterUrl' => Url::toRoute('index'),
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            [
                'attribute'=>'company_types__alias',
                'label'=> $Package->t('', 'Тип'),
                'format'=>'text',
                'content'=>function($data){
                    if ($data->type != null)
                    return $data->type->title;
                },
                'filter' => CompanyTypes::getList()
            ],
            'alias',
            'name',
            'email',
            'phone',
            [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{view} {update} '
            ],
        ],
    ]); ?>
    <?php Pjax::end(); ?>


в итоге на выходе я получаю обыкновенную таблицу, а мне необходимо вывести ее в виде дерева. Как сделать обыкновенную таблицу древовидной я разобрался, нашел плагин тут все ок. Но есть вопрос к разметки вывода. Изначально yii выводит таблицу table tbody tr td, а мне ко всему этому надо чтобы была такая структура

<ul id="tree">

    <li>

        <table>
            <thead>
            <th>Column</th>
            <th>Column1</th>
            <th>Column2</th>
            <th>Column3</th>
            </thead>
            <tbody>
                <tr>
                    <td>cell 1</td>
                    <td>cell 2</td>
                    <td>cell 3</td>
                    <td>cell 4</td>
                </tr>

            </tbody>
        </table>

        <ul>
            <li>
                <table>
                    <tbody>
                        <tr>
                            <td>cell 1</td>
                            <td>cell 2</td>
                            <td>cell 3</td>
                            <td>cell 4</td>
                        </tr>
                    </tbody>
                </table>

                <ul>
                    <li>
                        <table>
                            <tbody>
                                <tr>
                                    <td>cell 1</td>
                                    <td>cell 2</td>
                                    <td>cell 3</td>
                                    <td>cell 4</td>
                                </tr>
                            </tbody>
                        </table>
                        <ul>
                            <li>
                                <table>
                                    <tbody>
                                    <tr>
                                        <td>cell 1</td>
                                        <td>cell 2</td>
                                        <td>cell 3</td>
                                        <td>cell 4</td>
                                    </tr>
                                    </tbody>
                                </table>
                                <ul>
                                    <li>
                                        <table>
                                            <tbody>
                                            <tr>
                                                <td>cell 1</td>
                                                <td>cell 2</td>
                                                <td>cell 3</td>
                                                <td>cell 4</td>
                                            </tr>
                                            </tbody>
                                        </table>
                                    </li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
</ul>


То-есть сама таблица должна завернуться в ul li а каждый потомок в свою очередь(каждая строка стандартной таблицы которую формирует yii) должен завернуться в ul li table tbody tr(строка формируемая YII, сам потомок)
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Quieteroks
php программист
А как по вашему GRID должен узнать о потомках?

На самом деле все просто. Вам нужно просто отнаследоваться от grid и переписать функции вывода так, как вам это необходимо. С предварительно разбивкой на родителей и потомков, с последующим рекурсивным выводом.
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Пишите свой dataProvider и свой виджет для вывода. Возможно стоит не gridview насиловать, а listView?
Ответ написан
@LiguidCool
Я мало знаком с yii2, но думаю не факт что он так умеет. А вообще зачастую для вывода дерева нужна рекурсия - делайте вывод ручками.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы