我的问题如下。 我试图将多个项目插入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,
],
]) ?>
但现在如何将所选项目保存到DB表中。存储选定的项目(在窗口小部件中是否有一些数组)? 我的'categories'属性在Model类中定义为:
public $categories = [];
我认为选定的项目会填充到它。但是它不起作用(在表单submition之后数组是空的)。我读了许多类似的主题,但没有找到完整和完整的解释它是如何工作的。我是Yii2的新人,也许是失去了生活。感谢任何帮助。
答案 0 :(得分:1)
通常以这种方式保存多项目(这是一种简化方式)
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();
}
}
}
......