json - Yii2:Kartik 的 DetailView 和 Select2 加载 id 不是文本

标签 json yii2 jquery-select2-4 kartik-v

因此,我使用多个输入在 Kartik 的 DetailView 中加载 Kartik 的 Select2 小部件:

[
  '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}}

有什么想法吗?

更新了以下 KARTIK 的解决方案:

添加 initValueText 作为所需属性值的数组:

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

最佳答案

在使用 Select2 和 ajax 时,需要设置 Select2::initValueText 以显示显示的名称而不是 id。对于多个选择,需要将其设置为数组。

关于json - Yii2:Kartik 的 DetailView 和 Select2 加载 id 不是文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651402/

相关文章:

jquery - 带有多选选项的 Select2 只允许我写 2 个字符

debugging - Yii2 调试模块中没有 Ajax 请求

jquery-select2-4 - Select2 4.0 占位符未定义

json - 如何通过命令行或手动将 json 文件数据加载到现有 couchbase 存储桶?

javascript - 如何从输入框中读取数据并存储在 JSON 文件中?

yii - 如何在yii2查询构建器中基于子查询在where条件中编写if条件

Yii2 清理 URL 和操作参数

javascript - 如果组标题匹配,则选择 2 自定义匹配器以保持选项打开

javascript - 如何在 Threejs 中正确加载 Json 文件

arrays - 查询 JSON key :Value Pairs in AWS Athena