Как в Yii2 Select2 вывести заранее определённые option в select до вызова AJAX поиска?

В Yii2 Select2 можно вывести заранее определённые option в select до вызова AJAX поиска, используя опцию initSelection.

Прежде всего, нужно убедиться, что у вас настроен Select2 с AJAX-поиском и работает правильно. Затем добавьте в свойство options массив с элементом initSelection. Этот массив будет содержать JS-функцию, которая будет вызываться перед запуском AJAX-поиска. Внутри этой функции вы можете добавить нужные вам опции к выпадающему списку.

Вот пример кода:

use yiiwebJsExpression;
use yiihelpersUrl;
use yiiwidgetsActiveForm;

// создаем ActiveForm
$form = ActiveForm::begin();

// настраиваем Select2 с AJAX-поиском
echo $form->field($model, 'attribute')->widget(dosamigosselect2Select2::classname(), [
    'options' => [
        'placeholder' => 'Введите значение',
    ],
    'initSelection' => new JsExpression(<<<JS
        function (element, callback) {
            // добавляем заранее определенные option
            var option = new Option('Значение 1', 'значение1', true, true);
            element.append(option);
            var option = new Option('Значение 2', 'значение2', true, true);
            element.append(option);
            
            // вызываем callback функцию
            callback();
        }
JS
    ),
    'pluginOptions' => [
        'ajax' => [
            'url' => Url::to(['controller/action']),
            'dataType' => 'json',
            'data' => new JsExpression('function(params) { return {q:params.term}; }'),
            'processResults' => new JsExpression('function(data) { return {results: data}; }'),
        ],
    ],
])->label(false);

ActiveForm::end();

В данном примере мы использовали виджет Select2 от dosamigos. Вы можете настроить его в соответствии с вашими потребностями.

В функции initSelection мы добавляем две заранее определенные опции к выпадающему списку. Значение каждой опции указано в 'Значение 1' и 'Значение 2', а их соответствующие ключи - в 'значение1' и 'значение2'. Вы можете изменить их на свои.

Обратите внимание, что после добавления опций мы вызываем callback функцию. Это необходимо, чтобы Select2 мог продолжить свою работу. Если не вызывать эту функцию, Select2 может не работать корректно.

После добавления этого кода вам следует увидеть заранее определенные опции в выпадающем списке Select2 до того, как вы начнете вводить текст для поиска через AJAX.