【问题标题】:How to organize multiselect dropdownlist using kartik-select2 extension如何使用 kartik-select2 扩展组织多选下拉列表
【发布时间】:2016-08-08 19:50:52
【问题描述】:

我需要组织多选下拉列表。我试过这样:

<?= $form->field($model, 'receiver_id')->widget(Select2::classname(),
    [ 'data' => ArrayHelper::map(User::find()->all(),'id','username'),
        'options' =>
            ['placeholder' => 'Select receivers...', 'multiple' => true],
        'pluginOptions' =>
            [ 'tags' => true,
                'maximumInputLength' => 10
            ],
    ]);
?>

在视图中似乎正确,在文本字段中接收者一一出现,但是当我按下“发送”按钮时,它说接收者 ID 必须是整数。我该如何解决这个问题?我需要为使用 select2 下拉列表选择的不同接收器复制一个数据库记录。例如,我在下拉列表 user1 和 user2 中选择,“发送”操作应该相应地工作两次。在名为 'letter' 的 db 表中应该是两条相同的记录,但 id 和 receiver_id 不同。

我在Controller类中的actionCreate函数:

public function actionCreate()
{
    $model = new Letter();

    if ($model->load(Yii::$app->request->post())) {

        foreach($model->receiver_id as $r_id){
            $save = new Letter();
            $save->type_id = $model->type_id;
            $save->subject = $model->subject;
            $save->body = $model->body;
            $save->sender_id = $model->sender_id;
            $save->start_date = $model->start_date;
            $save->end_date = $model->end_date;
            $save->receiver_id = $r_id;
            $save->save();
        }
        $model->attachment = UploadedFile::getInstance($model, 'attachment');
        $filename = pathinfo($model->attachment , PATHINFO_FILENAME);
        $ext = pathinfo($model->attachment , PATHINFO_EXTENSION);

        $newFname = $filename.'.'.$ext;

        $path=Yii::getAlias('@webroot').'/uploads/';
        if(!empty($newFname)){
            $model->attachment->saveAs($path.$newFname);
            $model->attachment = $newFname;
            if($model->save()){
                return $this->redirect(['view', 'id' => $model->id]);
            }
        }
    }
    return $this->render('create', [
        'model' => $model,
    ]);

}

我的 IDE 在“$model->receiver_id”上说“预期类型数组或对象,实际:int”

提前致谢。

【问题讨论】:

  • 我认为您需要更改receiver_id 属性的规则。
  • 规则是什么意思?

标签: php list yii2 multi-select dropdown


【解决方案1】:

在你的模型上做receiver_id作为数组;和

foreach($model->receiver_id as $r_id){
    $save = new YourModel();
    $save->yourProperty = $model->yourProperty;
    ....
    $save->receiver_id = $r_id;
    $save->save();
}

【讨论】:

  • 是否需要将此循环添加到 actionCreate 方法中?
  • 是的 actionCreate
  • 你能指定如何做到这一点“在你的模型上做receiver_id作为数组”吗?
  • 它说“为 foreach() 提供的参数无效”
  • 我认为将receiver_id更改为仅在视图中的数组是不够的。你怎么看?
猜你喜欢
  • 2020-04-14
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多