0
をテキストではないので、私は複数の入力を使用して、KartikのDetailViewでKartikのSelectセレクトウィジェットをロードしています:Yii2:KartikのDetailViewとSelectセレクト積載のidの
[
'attribute' => 'characters',
'format' => 'raw',
'type' => DetailView::INPUT_SELECT2,
'value' => function($form, $widget) {
<my_stuff_in_VIEW_mode>
},
'widgetOptions' => [
'options' => ['multiple' => true, 'placeholder' => Yii::t('app', 'Select...')],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'maximumInputLength' => 20,
'language' => Yii::$app->language,
'ajax' => [
'url' => \yii\helpers\Url::to(['myAjaxServer']),
'dataType' => 'json',
'delay' => 250,
'data' => new JsExpression('function(params) { return {q:params.term, p:params.page}; }'),
'cache' => true,
],
'escapeMarkup' => new JsExpression("function (markup) { return markup; }"),
'templateResult' => new JsExpression("function (characters) { return '<b>' + characters.text + '</b>'; }"),
'templateSelection' => new JsExpression("function (characters) { return characters.text; }"),
],
],
],
それはKartikのDetailViewになると、VIEWモードは正しく文字の私のリストを示していvalue
によって与えられたが、EDITモードに入るとき、私はこれを得た:
を明らかに私が期待したものではありませんどの:私は私のキャラクターの名前ではなく、そのIDをしたいです。しかし、この同じ入力ドロップダウンから新しい文字を選択すると、新しい名前が正しく表示される新しいタグが追加されます(このため、データの更新時にこの問題が発生します)。新しいデータを確認して更新しようとすると、新しい文字が再びそのIDとともに表示されます。次のように
JSONデータは次のとおりです。
{"results":[{"id":"8","text":"Character8"},{"id":"5","text":"Character5"}],"pagination":{"more":true}}
任意のアイデア?
が必要な属性値の配列としてinitValueText
を追加します:
は、以下のKARTIKによって溶液を使用して更新代わりに表示名を表示するAjaxでSelectセレクトを使用するときは、
Select2::initValueText
を設定する必要が 'initValueText' => ArrayHelper::getColumn($model->characters, 'name'),
ありがとうKartik。ちょうど追加されました: '' initValueText '=> ArrayHelper :: getColumn($ model-> characters、' name ') ' –