Как сохранить выбранные элементы виджета kartik-Select2 в БД в Yii2?

Моя проблема заключается в следующем.
Я пытаюсь вставить несколько элементов в таблицу базы данных mysql. Я использую виджет Kartik-Select2 для выбора предметов.
Следующий код работает для меня, и я могу выбрать несколько элементов с ним.

 <?= $form->field($model, 'categories')->widget(Select2::className(), [
'data' => $model->availableCategories(),
'model' => $model,
'attribute' => 'categories',
'language' => 'en',
'options' => ['placeholder' => 'Select a site...'],
'pluginOptions' => [
'allowClear' => true,
'multiple' => true,
],
]) ?>

Но как теперь сохранить выбранные элементы в таблицу БД. Где хранятся выбранные элементы (есть ли какой-нибудь массив для них внутри виджета)?
Мой атрибут ‘category’ определен в классе Model как:

public $categories = [];

Я думал, что выбранные предметы будут заполнять его. Но это не работает (массив пуст после отправки формы). Я прочитал много похожих тем, но не нашел полного и полного объяснения, как это работает. Я новичок в Yii2 и, возможно, потерял что-то. Спасибо за любую помощь.

3

Решение

Обычно несколько выбранных элементов сохраняются таким образом (это упрощенный способ)

  public function actionYourAction()
{
$post = Yii::$app->request->post();

if (!empty($post)){

$postModel = $post['YourModel'];
$postModelMulti=  $postModel['your_multi_attribute'];

if ( !empty( $postModelMulti) ){
foreach ($postModelMulti as $key => $value) {

$newModel  = new YuorModelToAdd();

$newModel->your_attribute = $value;

$newModel->save();
}
}
}
......
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]