Yii2 検索モデルで jquery-select2 (リモート データの読み込み) プラグインを使用しようとしています。現時点では、コントローラーは検索モデルから作成された $dataProvider を返します。ただし、select2 がドロップダウンの作成に使用できる形式ではないことは明らかです。
2 つを連携させるには、$dataProvider または select2 に対して何をする必要がありますか?
私の見方では、2つのオプションがあります:
- $dataProvider から 'cat_name' を抽出し、select2 が使用できる形式にします。
- $dataProvider の読み方を select2 に教えます。
2 をどのように行うかはわかりませんが、「タグ付け」機能の実装が難しくなると思われるため、1 に傾いています。
どんな助けでも大歓迎です。
これが私のコードです:
コントローラ側
public function actionCatSearch($q)
{
if (Yii::$app->request->isAjax) {
$searchModel = new CatSearch();
$dataProvider = $searchModel->search(['catSearch' => ['cat_name' => $q]]);
return $dataProvider->models;
}
}
JS側
$(document).ready(function(){
$('.js-select').select2({
tags: true,
ajax: {
url: 'cat-search',
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term
};
},
processResults: function (data, page) {
return {
results: data
};
},
cache: true
},
minimumInputLength: 1
});
});