Save data from multiple Grid View

Hi,

I have in one page echo of 3 different gridview based on 3 different models. Models have no connection.

I want to collect some particular data from each grid with chechbox and send them in same DB tables.

This is the display page:


/** Operators Grid View  **/ 

    <?= GridView::widget([

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => [

			['class' => 'yii\grid\SerialColumn'],


			[ 'attribute' => 'useralias',

			'label' =>'Operator Name',],


			[ 'class' => 'yii\grid\CheckboxColumn',],


			[ 'attribute' => 'currency',

			'label' =>'Operator Currency',],


			['class' => 'yii\grid\ActionColumn', 'template' => '{view}'],

			],

    ]); ?>


	/** Country Grid View  **/

	 <?= GridView::widget([

        'dataProvider' => $dataProviderCountry,

        'filterModel' => $searchModelCountry,

        'columns' => [

			['class' => 'yii\grid\SerialColumn'],


			[ 'class' => 'yii\grid\CheckboxColumn',],




			[ 'attribute' => 'popis',

			'label' =>'Country',],


			['class' => 'yii\grid\ActionColumn', 'template' => '{view}'],

			],

    ]); ?>

	/** Currency Grid View  **/


	 <?= GridView::widget([

        'dataProvider' => $dataProviderCurrency,

        'filterModel' => $searchModelCurrency,

        'columns' => [

			['class' => 'yii\grid\SerialColumn'],


			[ 'attribute' => 'currency_name',

			'label' =>'Currency Name',],

                        [ 'class' => 'yii\grid\CheckboxColumn',], 




			[ 'attribute' => 'value',

			'label' =>'Value',],


			['class' => 'yii\grid\ActionColumn', 'template' => '{view}'],

			],

    ]); ?>

This is the controller (index function)


public function actionIndex()

    {

		//RMS

        $searchModel = new CardrmsSearch();

        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

		//Country

		$searchModelCountry = new CountrySearch();

        $dataProviderCountry = $searchModelCountry->search(Yii::$app->request->queryParams);

		//Currency	

		$searchModelCurrency = new CurrencySearch();

        $dataProviderCurrency = $searchModelCurrency->search(Yii::$app->request->queryParams);


        return $this->render('index', [

            'searchModel' => $searchModel,

            'dataProvider' => $dataProvider,

                        'searchModelCountry' => $searchModelCountry,

            'dataProviderCountry' => $dataProviderCountry,

			'searchModelCurrency' => $searchModelCurrency,

            'dataProviderCurrency' => $dataProviderCurrency,

        ]);    }

I can’t find anything for this, my idea was to create one action for collecting the data, but I dont know how to colect the data from all 3 selected checkbox in one step!

Plz any tips how it can be done?

Create a model for the form that will collects the selected items.

For example:




class MyModel extends Model

{

    public $items;    // selected items

    ...

}






public function actionIndex()

{

    // Model for the form

    $model = new MyModel();

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

        if ($model->save()) {

            return ...;

        }

    }


    //RMS

    $searchModel = new CardrmsSearch();

    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    //Country

    $searchModelCountry = new CountrySearch();

    $dataProviderCountry = $searchModelCountry->search(Yii::$app->request->queryParams);

    //Currency      

    $searchModelCurrency = new CurrencySearch();

    $dataProviderCurrency = $searchModelCurrency->search(Yii::$app->request->queryParams);


    return $this->render('index', [

        'searchModel' => $searchModel,

        'dataProvider' => $dataProvider,

        'searchModelCountry' => $searchModelCountry,

        'dataProviderCountry' => $dataProviderCountry,

        'searchModelCurrency' => $searchModelCurrency,

        'dataProviderCurrency' => $dataProviderCurrency,

        'model' => $model,

    ]);

}



And in the view, you should place a form with some hidden input that holds the selected items, to which you can populate the values before submitting the form using some javascript.