現在、私はKartikのSelect2に基づいてオプショングループを使って静的なドロップダウンをレンダリングするためのフォームフィールドを持っています。データは、次のように入力されます。Yii2:AjaxベースのKartikのSelect2でオプショングループを使用する方法
public function getBibliographyList()
{
return ArrayHelper::map($this->find()->select(['id','title','author'])
->orderBy('author','title')->all(), 'id', 'title', 'author');
}
タイトルはそれぞれの作成者オプショングループの下に表示されます。 ---------
------ VIEWを:
は、今私はAJAXの利点を活用するためのフォームを刷新したいので、私はKrajee Demo Site for Select2に例を取って、次のようにそれを作り直し - KartikのSelectセレクトdocs、ArrayHelperあたりとして
<?= $form->field($model, 'orig_id')->widget(Select2::classname(), [
'options' => ['placeholder' => Yii::t('app', 'Select a title...)],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'language' => Yii::$app->language,
'theme' => 'krajee',
'ajax' => [
'url' => \yii\helpers\Url::to(['search-doc']),
'dataType' => 'json',
'data' => new JsExpression('function (params) { return {q:params.term}; }'),
],
'errorLoading' => new JsExpression("function() { return '".Yii::t('app', 'Waiting for data...')."'; }"),
'escapeMarkup' => new JsExpression("function (markup) { return markup; }"),
'templateResult' => new JsExpression("function (bibliography) { return bibliography.title; }"),
'templateSelection' => new JsExpression("function (bibliography) { return bibliography.title; }"),
],
]) ?>
-------- CONTROLLER -------------
public function actionSearchDoc($q = null)
{
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$out = ['id' => '', 'title' => '', 'author' => ''];
if ($q) {
$query = new yii\db\Query;
$query->select('id, title, author')
->from('bibliography')
->where(['like', 'title', $q])
->orWhere(['like', 'author', $q])
->limit(50);
$command = $query->createCommand();
$data = $command->queryAll();
$out = array_values($data);
}
return \yii\helpers\ArrayHelper::map($out, 'id', 'title', 'author');
}
::マップが道でありますoptgroupsがあるときに行くが、私はfiすることができないドロップアウトが常に空であるため、これを調べてください。 ArrayHelper :: mapのJSON文字列の例を次に示します。
{"results":{"Author1":{"4":"DocumentFoo1","121":"DocumentFoo2","219":"DocumentFoo3","197":"DocumentFoo4","198":"DocumentFoo5","2":"DocumentFoo6","273":"DocumentFoo7"},"Author2":{"68":"DocumentThee1"}}}
アイデアはありますか?
エラーメッセージを追加してください。 – marche
mmmm、私はArrayHelper行の先頭にバックスラッシュがないため、このエラーが発生しました。とにかく、オプトグループのマッピングの問題は解決しません。私は適切な解決策を掲示できるまで試し続けます。 –