Select2 через Ajax на Yii2

Есть крутой плагин Select2 и его реализация для Yii2 от kartik-v

Случилось тут, что данных оказалось крайне много, поэтому загружать их прямо в плагин не представляется возможным. А значит загружать их нужно динамически.

Для этого создаем экшен

 

$form->field($model, 'fruit')->widget(
                    \kartik\select2\Select2::class,
                    [
                        'data' => \app\models\Fruit::getFruits(), //данные при инициализации, в том числе и если в модели уже есть данные для этого поля в формате: [key=>value]
                        'options' => [
                            'prompt' => 'Выберите фрукт',
                            'id' => 'placement-id',
                        ],
                        'pluginOptions'=>[
                                'minimumInputLength'=>3,
                                'ajax'=>[
                                    'url'=>\yii\helpers\Url::to(['/fruit/fruit']),
                                    'dataType'=>'json',
                                    'delay'=>250,
                                    'cache'=>true,
                                ]
                        ],
                    ]

Тут все просто, но особенность здесь в получаемых данных, а именно то, как их подготовить.

Здесь указан формат данных: https://select2.org/data-sources/formats, поэтому с учетом формата экшен fruit должен возвращать массив [‘results’ => [ [‘id’=>1, ‘text’=>’Apple’], [‘id’=>2, ‘text’=>’Orange’] ] ]  в формате Json.

Более подробно про то, какие параметры есть можно почитать тут: https://select2.org/data-sources/ajax

и быстрый взгляд можно поглядеть тут: https://stackoverflow.com/questions/46661166/how-to-use-widget-kartik-select2-with-ajax-templates-in-yii2

 

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.