Возможно кто сталкивался и возможно у кого есть готовое решение/рекомендации.
Использую на странице модальное окно yii\bootstrap\Modal, содержимое которого подгружаю через ajax.
В загружаемом контенте есть Select2, в котором все работает за исключением строки поиска. При клике появляется список элементов для выбора и строка поиска которая недоступна для ввода.
Ближе к коду.
Модальное окно:
Код: Выделить всё
Modal::begin(
[
'options' => [
'id'=> 'modal-import',
'tabindex' =>false, // Эту опцию рекомендует отключать Kartik
],
'header' => Html::tag('h2','').Html::hiddenInput('action',null,['id' => 'modal-action']),
'size' => Modal::SIZE_LARGE,
]
);
Modal::end();
Код: Выделить всё
$script = <<< JS
function setModalTitle(title) {
$("#modal-import").find("div.modal-header").find("h2").empty().append(title);
}
JS;
$this->registerJs($script, yii\web\View::POS_HEAD);
$script = <<< JS
$('#modal-import').on('show.bs.modal', function () {
var url = $("#modal-action").val();
$.ajax({
url: url,
type: 'GET',
beforeSend: function(){
$("#modal-import").find("div.modal-body").html('Идет обработка данных');
},
success: function(data){
$("#modal-import").find("div.modal-body").html(data);
var newTitle = $('#modal-title').val();
setModalTitle(newTitle);
},
error: function(xhr, str){
if (xhr.responseText) {
$("#modal-import").find("div.modal-body").html('Возникла ошибка: ' + xhr.responseText);
setModalTitle('Ошибка.');
}
}
});
$("#modal-import").show();
});
JS;
$this->registerJs($script);
Вo view-файле все так же довольно стандартно.
Код: Выделить всё
...
echo Html::hiddenInput('title', $this->title, ['id' => 'modal-title']);
...
echo $form->field($model, 'list_items')->widget('\kartik\select2\Select2', [
'data' =>$listItems,
'pluginOptions'=>[
'templateResult' => new JsExpression(
"function format(state) {return state.text;}"
),
'templateSelection' => new JsExpression(
"function format(state) {return state.text;}"
),
'escapeMarkup' => new JsExpression("function(m) { return m; }"),
'allowClear' => true,
],
'options' => [ 'prompt' => \Yii::$app->formatter->nullDisplay,],
]);
...