【问题标题】:Yii2: Kartik Select2: Initial Value from Model AttributeYii2:Kartik Select2:模型属性的初始值
【发布时间】:2017-02-21 12:21:10
【问题描述】:

我有一个模型,它有一列(属性)存储了逗号分隔的 ID 值。

例如, 电影有一个“流派”列,其中包含多个流派,例如:40,20,1,3

当 'multiple' => true 时,我如何使用 Select2 小部件来分隔这些值

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

任何帮助表示赞赏

【问题讨论】:

    标签: csv model yii2 select2 kartik-v


    【解决方案1】:

    如果我没记错的话,将默认选项作为小部件的 $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 的文档并没有具体说明如何执行此操作。

    【讨论】:

      【解决方案2】:

      我不相信你能做到。 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 会将逗号分隔字段中的值保存为数组。当然,您需要为其添加验证规则并在创建和更新表单中使用它而不是您的其他属性。

      【讨论】:

        【解决方案3】:

        如果您正在显示一个包含已填充字段的表单,也许您想更新一个已经存在的对象,并且您想显示 Select2 字段的已保存值,请使用 'data' => [ 1 => ' Some value' ],其中 1 是与表单中显示的值相关联的值。您可以事先从数据库中检索要放入数据的内容。

        来源:https://github.com/kartik-v/yii2-widget-select2/issues/37

        【讨论】:

          猜你喜欢
          • 2017-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          相关资源
          最近更新 更多