javascript - 在结果中选择带有图标的 2

标签 javascript yii jquery-select2

我正在尝试在 Yii 框架中创建一个下拉 select2,并使用 select2 v.3.5.2,我包含以下我尝试过的代码片段。

此导入选择2分机。

<?php Yii::import('ext.select2.Select2'); ?>

此 Select2 表单:

<?php
echo $form->labelEx($model,'icon_mark');
echo Select2::activeDropDownList($model, 'icon_mark', array(), array('class' => 'form-control'));
echo $form->error($model,'icon_mark');
?>

此 Html 数据(在 JavaScript 中加载):

<option value="euro">euro</option>
<option value="asterisk">asterisk</option>
<option value="plus">plus</option>

还有这个 JavaScript:

$.ajax({
    url: "<?php echo CController::createUrl('site/loadkelurahan') ?>",
    type: 'POST',
    data: {},
    success: function (data) {
        $('#<?php echo CHtml::activeId($model, 'icon_mark') ?>').html(data);
        $('#' + '<?php echo CHtml::activeId($model, 'icon_mark') ?>').select2().select2('val', '');
        if ("<?php echo $ismode ?>" == "edit") {
            $('#' + '<?php echo CHtml::activeId($model, 'icon_mark') ?>').select2().select2('val', '<?php echo $model->icon_mark?>');
        }
    },
    error: function (jqXHR, status, err) {
        alert(err);
    }
});

结合上面的脚本select2运行正常,那么我想问这里如何为select2添加模板? 因为我想要下拉菜单分别选择2个自己的图标。 你可以举出任何适当的例子。 谢谢。

最佳答案

我做了同样的事情,但在 Yii2 中,基本上你需要做同样的事情,调整 select2 小部件的渲染功能

这是我的 yii2 代码:

            <?php $format = new JsExpression(
                "function format(icon) {
                                return '<i class=\"'+ icon.id +'\" aria-hidden=\"true\"></i> '  + icon.text.replace('-', ' ');
                            }"
            );
            ?>
            <?= \kartik\select2\Select2::widget(
                [
                    'name'          => 'MenuItem[' . $item->id . '][icon]',
                    'id'            => 'menu-item-icon-' . $item->id,
                    'data'          => array_merge(['none' => 'None'], \rmrevin\yii\fontawesome\FA::getConstants()),
                    'value'         => $item->icon,
                    'pluginOptions' => [
                        'templateResult'    => $format,
                        'templateSelection' => $format,
                        'escapeMarkup'      => new JsExpression("function(m) { return m; }"),
                        'allowClear'        => false,
                    ],
                ]
            ); ?>

在 templateResult 和 templateSelection 回调中,您需要渲染图标。并且在escapeMarkup中只返回参数,以确保模板不被转义

关于javascript - 在结果中选择带有图标的 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41655208/

相关文章:

jquery - 在 select2 ajax rails 上填充初始值

jquery-select2 - 如何动态调整 select2 输入的大小,使其与所选选项的宽度相同?

javascript - 最初禁用单选按钮javascript

javascript - 数据表:使用行分组,如何获取每个分组行的计数?

html - 这个 css 有一个包含 2 行的页面是否正确?

php - Yii:在创建期间获取 Controller 操作中相关表的最后插入 ID

jquery - Select2 with Twitter Bootstrap 3/Dropdown wrong width

javascript - express - 末尾可选斜杠

javascript - 如何正确地将 keyup() 函数应用于具有不同输入的不同 DOM 元素?

php - 如何转换为在 View 中使用 Yii CDataProvider?