Задать вопрос
VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Select2. Как будет выглядеть код?

Есть массив
$array['results'] = [
    '0' => [
        'text'     => 'Одежда',
        'children' => [
            '0'   => [
                'text'     => 'Футболки',
                'children' => [
                    '0' => [
                        'text' => 'Майки спортивные',
                        'id'   => '3'
                    ],
                    '1' => [
                        'text' => 'Футболки-поло',
                        'id'   => '4'
                    ]
                ]
            ],
            '1'   => [
                'text'     => 'Брюки и шорты',
                'children' => [
                    '0'   => [
                        'text' => 'Бермуды',
                        'id'   => '6'
                    ],
                    '1'   => [
                        'text' => 'Брюки',
                        'id'   => '7'
                    ]
                ]
            ]
        ]
    ],
    '1' => [
        'text'     => 'Обувь',
        'children' => [
            '0'   => [
                'text'     => 'Туфли',
                'children' => [
                    '0' => [
                        'text' => 'Туфли спортивный',
                        'id'   => '8'
                    ],
                    '1' => [
                        'text' => 'Туфли классические',
                        'id'   => '9'
                    ]
                ]
            ],
            '1'   => [
                'text'     => 'Ботинки',
                'children' => [
                    '0'   => [
                        'text' => 'Ботинки зимние',
                        'id'   => '10'
                    ],
                    '1'   => [
                        'text' => 'Ботинки летние',
                        'id'   => '11'
                    ]
                ]
            ]
        ]
    ],
];

И есть Select2
echo $form->field($product_model, 'category_id')->widget(
    Select2::classname(), [
        'hideSearch'    => true,
        'options'       => [
                'class' => 'select-category',
                'placeholder' => 'Выберите модель товара, или добавьте новую ...',
        ],
        'theme'         => Select2::THEME_DEFAULT,
        'pluginOptions' => [
            'tags'              => true,
            'allowClear'        => true,
            'ajax'              => [
                'url'      => \yii\helpers\Url::to(['products/product-list']),
                'dataType' => 'json',
            ],
        ],
    ]
);

Так вот, как видно, Select2 заходит по url "products/product-list" который возвращает данный массив в json формате.
И в итоге получается это:
5a5501f7e9cff958395524.png
Все класс, работает, но есть одно но...
А именно, когда разворачиваешь список, он секунд 10 его грузит!

Если я определяю этот же массив в контроллере, передаю его при загрузке страницы в вид и записываю в select2:
echo $form->field($product_model, 'category_id')->widget(
    Select2::classname(), [
        'hideSearch'    => true,
        'options'       => [
                'class' => 'select-category',
                'placeholder' => 'Выберите модель товара, или добавьте новую ...',
        ],
        'data' => $array, // Нужный массив, НЕ в json формате
        'theme'         => Select2::THEME_DEFAULT,
        'pluginOptions' => [
            'tags'              => true,
            'allowClear'        => true,
        ],
    ]
);

то получается такая билибирда:
5a55036ace5f0505401797.png
Как мне починить этот Select, что нужно вписать, дописать?? Уже второй день голову ломаю!
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
избыточная вложенность массива
Ответ написан
Ваш ответ на вопрос

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

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