2017-02-21 82 views
0

我有一个模型,他有一个列(属性)存储逗号分隔的ID值。Yii2:Kartik Select2:模型属性的初始值

例如 电影具有列“类型”,包括一个以上的类型,例如:40,20,1,3

如何使用选择二插件来显示这些值时分离“多个” => true

如何将它们保存为逗号分隔值作为字符串。我想要一个可以快速灵活的解决方案。我知道你可以爆炸和爆炸的字符串,但似乎太多了。

任何帮助表示赞赏

回答

0

如果我没记错通过默认选项作为插件的选项$配置的一部分:

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'); 

这是从内存中粮FO盐在这里。 http://demos.krajee.com/widget-details/select2的文档对于如何做到这一点并不是很具体。

0

我不相信你能做到这一点。 Select2将数据作为数组发送,因此在保存之前仍然需要使用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将举行由逗号分隔字段中的值作为数组。当然,您需要为其添加验证规则,并在创建和更新表单中使用它来代替其他属性。