Как в yii2 красиво добавить data-attribute в выпадающий список?

Вообщем пытаюсь прикрутить этот jquery плагин designwithpc.com/Plugins/ddSlick. Он позволяет вставлять картинки в выпадающий список. Для этого нужно в каждый option в select вставить атрибут data-imagesrc="путь к изображению".
В данный момент выпадающий список делается так:
Html::dropDownList('league', 'id', ArrayHelper::map(League::find()->all(),'id','name'), [
            'prompt' => 'Select league',
            'class' => 'center-block',
            'style' => 'width: 80%;',
            'id' => 'leagues',
]);

Вопрос: как красиво приклеить еще сюда data-imagesrc с нужным изображением? Как выриант можно через ajax формировать нужный html код, но мне кажется это не слишком правильным.

Thanks in advance

UPD:
Как в yii2 добавить dropDown с картинками:
1) Подключаем этот плагин designwithpc.com/Plugins/ddSlick
2) Делаем php функцию, возвращающую нужный нам html код
public function actionGetModelsWithImages(){
        $models = Models::find()->all();
        $items = [];
        $options = [];
        foreach($models as $model){
            //Формируем массив option'ов для нашего select'а
            $items[$model->id] = $model->name;
            $image32x32Path = "images/32x32/" . $model->name . ".png";
            //Формируем массив атрибутов для каждого option'а
           //Эти атрибуты(data-imagesrc, data-description) нужны для плагина
            $options[$model->id] = [
                'data-imagesrc' => $image32x32Path,
                'data-description' => $model>name,
            ];
        }
        return Html::dropDownList('nameSelectModels', 'id', $items, [
            'id' => 'selectModels',
            'options' => $options,
        ]);
    }


3) В javascript добавляем:
$.ajax({
            type: 'GET',
            url: 'index.php?r=prediction/getModelsWithImages', 
            success: function(data){
                    //добавляем html в нужный div
                    $('#leagues').html(data);
                    //активируем плагин
                    $('#selectModels').ddslick({
                        width: 350,
                    });
            }
});
  • Вопрос задан
  • 8980 просмотров
Пригласить эксперта
Ответы на вопрос 1
ArtyomovAnton
@ArtyomovAnton
PHP и всё что рядом
Красивее только если через ArrayHelper::map
Например вызов выпадающего списка
$models = Models::find()->all();
return Html::dropDownList('nameSelectModels', null, 
            ArrayHelper::map($models, 'id', 'name'), [
                 'id' => 'selectModels',
                 'options' => ArrayHelper::map($models, 'id', 'dnames'),
            ]);

где dnames - метод класса Models:
class Models{
...
public function getDname(){
        return [
             'data-imagesrc'=>"images/32x32/" . $this->name . ".png",
             'data-description'=>$this->name
        ];
    }
...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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