2017-01-14 9 views
0

私はYiiフレームワークでselect2をドロップダウンしようとしています。select2 v.3.5.2を使用して、以下のコードスニペットを取り上げました。Select2 With Result With Result

このインポートセレクト2 Ext。

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

このSelectセレクトフォーム:

<?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データは、(ジャバスクリプト内の負荷):

<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を実行していないmallyでは、select2のテンプレートを追加する方法をここで尋ねますか? 私はドロップダウンselect2のアイコンをそれぞれしたいからです。 何か適切に例を挙げることができます。ありがとう。

答えて

0

私は同じことをしましたが、Yii2で、基本的には同じことを行う必要があり、SELECT2ウィジェットここ

のレンダリング機能を微調整することyii2からの私のコードです:templateResultで

  <?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, 
        ], 
       ] 
      ); ?> 

あなたのアイコンをレンダリングする必要があるtemplateSelectionコールバックです。とエスケープマークアップでは、テンプレートがエスケープされていないことを確認するために、パラメータを返す

+0

どのようなYii 1? –