Yii2 Kartik Select2 - 格式化每个列表元素的模板

时间:2016-08-18 21:54:10

标签: yii2 select2

我正在寻找Kartik Select2 Page

特别是我想在列表的每个元素中添加一个图像,例如:

use kartik\widgets\Select2;
use yii\web\JsExpression;
use yii\bootstrap\Modal;

// Templating example of formatting each list element
$url = \Yii::$app->urlManager->baseUrl . '/images/flags/';
$format = <<< SCRIPT
function format(state) {
    if (!state.id) return state.text; // optgroup
    src = '$url' +  state.id.toLowerCase() + '.png'
    return '<img class="flag" src="' + src + '"/>' + state.text;
}
SCRIPT;
$escape = new JsExpression("function(m) { return m; }");
$this->registerJs($format, View::POS_HEAD);
echo '<label class="control-label">Provinces</label>';
echo Select2::widget([
    'name' => 'state_12',
    'data' => $data,
    'options' => ['placeholder' => 'Select a state ...'],
    'pluginOptions' => [
        'templateResult' => new JsExpression('format'),
        'templateSelection' => new JsExpression('format'),
        'escapeMarkup' => $escape,
        'allowClear' => true
    ],
]);

在这个例子中,你可以看到,带有状态图像的文件名与state.id具有相同的名称。

src = '$url' +  state.id.toLowerCase() + '.png'

并且使用起来很简单。

但我的问题是每个州的文件名都不同,并存储在我的数据库中。例如,我有:

//Active Record
$state->id  //my state id
$state->img // the name of the image i want 

如何将列表中每个元素的正确图像名称传递给脚本?

感谢您的帮助。

0 个答案:

没有答案