2017-03-07 2 views
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モードに入るとき、私はこれを得た:

enter image description here

を明らかに私が期待したものではありませんどの:私は私のキャラクターの名前ではなく、その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'), 

答えて

2

idの複数選択の場合は、配列として設定する必要があります。

+0

ありがとうKartik。ちょうど追加されました: '' initValueText '=> ArrayHelper :: getColumn($ model-> characters、' name ') ' –

関連する問題