2017-03-07 76 views
0

所以我使用的是多輸入加載卡爾蒂克的選擇二小部件卡爾蒂克的的DetailView:Yii2:卡爾蒂克的的DetailView和選擇二裝載的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; }"), 
      ], 
    ], 
], 

當談到卡爾蒂克的的DetailView,VIEW模式正確地顯示我的人物列表通過value給出,但進入編輯模式,當我得到這個:

enter image description here

這顯然不是我所期待的:我希望我的角色的名字,而不是它們的ID。但是,如果我從這個相同的輸入下拉列表中選擇新的字符,則會添加新的標籤以正確顯示新名稱(因此更新數據時會發生此問題)。在確認新數據並嘗試更新後,再次顯示新字符及其ID。

JSON數據如下:

{"results":[{"id":"8","text":"Character8"},{"id":"5","text":"Character5"}],"pagination":{"more":true}} 

任何想法?

與Solution更新人卡爾蒂克下圖:

添加initValueText如期望的屬性值的數組:

'initValueText' => ArrayHelper::getColumn($model->characters, 'name'), 

回答

2

您需要使用選擇二時,使用Ajax來顯示顯示名稱,而不是設置Select2::initValueText的id。對於多選,這需要設置爲一個數組。

+0

非常感謝Kartik。剛剛添加:''initValueText'=> ArrayHelper :: getColumn($ model-> characters,'name')' –

相關問題