Мне нужно организовать раскрывающийся список мультиселектов. Я пытался так:Как организовать выпадающий список multiselect с помощью расширения kartik-select2
<?= $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 должен быть целым. Как я могу решить эту проблему? Мне нужно дублировать одну запись db для разных приемников, которые я выбираю, используя выпадающий список select2. Например, я выбираю в раскрывающемся списке user1 и user2, действие «Отправить» должно работать дважды. В таблице db, названной как «письмо», должны быть две одинаковые записи с разными идентификаторами id и receiver_id.
Моя функция 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 говорит на "$ модели-> receiver_id", что "Ожидаемые типы массива или объекта, фактический: ИНТ"
Спасибо заранее.
Я думаю, вам нужно изменить правило атрибута 'receiver_id'. –
Какое правило вы имеете в виду? –