我有一个模型,其列(属性)存储了逗号分隔的ID值。
例如, 电影有一个列“流派”,包括一个以上的流派,例如:40,20,1,3
当'multiple'=>时,如何使用Select2小部件显示这些值。真
如何将它们保存为逗号分隔值作为字符串。我想要一个能够快速灵活的解决方案。我知道你可以内爆并爆炸但看起来太多了。
任何帮助表示赞赏
答案 0 :(得分:0)
如果我没记错,请将默认选项作为小部件的$ options配置的一部分传递:
echo $form->field($model, 'model_attribute_name')->widget(Select2::className(), [
'data' => $data
'options' => [
'class' => 'form-control',
'placeholder' => 'Choose Option...',
'selected' => 40
],
'pluginOptions' => [
'allowClear' => true,
],
])->label('Select2 Form Field');
这是来自谷物盐的记忆。 http://demos.krajee.com/widget-details/select2上的文档对于如何执行此操作并不十分具体。
答案 1 :(得分:0)
我不相信你能做到这一点。 Select2将数据作为数组发送到post,因此在保存之前仍需要使用implode。我要做的是在你的模型类中:
class MyModel extends \yii\db\ActiveRecord {
$public myArrayAttribute;
...
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->myAttribute = implode(',', $this->myArrayAttribute);
return true;
}
return false;
}
public function afterFind() {
parent::afterFind();
$this->myArrayAttribute = explode(',', $this->myAttribute);
}
}
这种方式myArrayAttribute
将逗号分隔字段中的值保存为数组。当然,您需要为其添加验证规则,并在创建和更新表单中使用它而不是其他属性。
答案 2 :(得分:0)
如果您要显示已填充字段的表单,也许您想更新一个已经存在的对象,并且您想显示 Select2 字段的已保存值,请使用 'data' => [ 1 => '某个值'],其中 1 是与表单中显示的值相关联的值。您可以预先从数据库中检索要放入数据的东西。
来源:https://github.com/kartik-v/yii2-widget-select2/issues/37