如何将复选框中的选定数据保存到数据库中

时间:2016-11-23 11:17:58

标签: yii2 yii2-advanced-app bulk yii2-model yii2-user

我的问题是当我从复选框中选择数据并单击“保存”按钮时,我不知道它在哪里。我是否需要在事件表中创建另一个表或添加列。enter image description here 这是事件的index.php编码。

    <?php

    use yii\helpers\Html;
    use yii\grid\GridView;

    /* @var $this yii\web\View */
    /* @var $dataProvider yii\data\ActiveDataProvider */

    $this->title = 'Events';

    $this->params['breadcrumbs'][] = $this->title;
    ?>

    <div class="events-index">

        <h1><?= Html::encode($this->title) ?></h1>
        <p>
            <?= Html::a('Create Events', ['create'], ['class' => 'btn btn- success']) ?>
        </p>
        <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'columns' => [
                ['class' => 'yii\grid\SerialColumn'],


                'event_title',
                'event_date',
                'event_location:ntext',

                ['class' => 'yii\grid\ActionColumn'],
                ['class' => 'yii\grid\CheckBoxColumn'],
            ],
        ]); ?>
        <?=Html::beginForm(['events/bulk'],'post');?>

    <center><?=Html::submitButton('Save', ['class' => 'btn btn-info',]);?> </center>
    <?= Html::endForm();?> 



    </div>

这是eventscontroller.php中动作批量的代码。我是yii2的新手,所以我不知道如何编辑以下代码,这样当我在select事件后单击保存按钮时,它将保存到数据库。

        public function actionBulk()
       {

       $selection=(array)Yii::$app->request->post('selection');//typecasting
       foreach($selection as $id){
            $e=Events::findOne((int)$id);//make a typecasting
            //do your stuff
            $e->save();
       }
         }

希望有人能帮助我解决问题。我真的很感激。谢谢。

1 个答案:

答案 0 :(得分:0)

修改此复选框列的gridview配置,以便它可以返回模型ID而不是表键:

[
    'class' => 'yii\grid\CheckBoxColumn',
    'checkboxOptions' => function ($model, $key, $index, $column) {
        return ['value' => $model->id];
    },
],