【问题标题】:YII2 Insert records selected from one grid to anotherYII2 将从一个网格中选择的记录插入到另一个网格中
【发布时间】:2016-04-10 01:12:38
【问题描述】:

我是Yii2的新手,以前我用自制mvc-php + extjs 4.2

所以我现在在 Yii2 上工作,我开始掌握简单的 CRUD 的窍门,当我需要为父子表制作输入表单时,我的 pobrem 就开始了。 我有 3 张桌子

  1. 佣金

    commission_id
    佣金名称
    佣金金额
    佣金百分比

  2. commission_scheme

    cscheme_id
    cscheme_name
    cscheme_amount
    cscheme_percent
    cscheme_bonus
    cscheme_description

  3. commission_scheme_detail

    cscheme_detail_id
    佣金_id
    cscheme_id

报名表为commission_scheme和commission_scheme_detail。

  • 我已经使用 gii 生成了所有的 crud
  • 我修改_form.php,在活动表单后添加commission_scheme_detail的gridview
  • 我还添加了包含来自佣金的选择网格的模式

这是 _form.php
gridview

<?php Pjax::begin(['id' => 'pjaxCschemedetail', 
                                'timeout' => false,
                                'enablePushState' => false, 
                                'clientOptions' => ['method' => 'POST']
                                ]); 
            echo GridView::widget([
                'id'        => 'gridCschemedetail',
                'dataProvider' => $detailData,
                'columns' => [
                    ['class' => 'yii\grid\SerialColumn'],

                    'CSCHEME_DETAIL_ID',
                    'CSCHEME_ID',
                    'COMMISSION_ID',

                    [
                        'class' => 'yii\grid\ActionColumn',
                        'buttons' => [
                        'update' => function ($url, $model) {

                                    return Html::a('<span class="glyphicon glyphicon-pencil"></span>', Yii::$app->urlManager->createUrl(['commission-scheme-detail/view','id' => $model->CSCHEME_DETAIL_ID,'edit'=>'t']), [
                                                            'title' => Yii::t('yii', 'Edit'),
                                                          ]);}

                        ],
                    ],
                ],
                'responsive'=>true,
                'hover'=>true,
                'condensed'=>true,
                'floatHeader'=>true,




                'panel' => [
                    'type'=>'info',
                    'before'=>  
                                                                                                                                                          'after'=>Html::a('<i class="glyphicon glyphicon-repeat"></i> Reset List', ['index'], ['class' => 'btn btn-info']),
                                Html::button('Add', [
                                    'id'    => 'addDetailButton',
                                    'class' => 'glyphicon glyphicon-plus btn btn-success btn-ajax-modal',
                                    'value' => Url::to('@web/commission/listselect'),
                                    'data-target' => '#modal_cschemedetail',
                                ]), 

                    'showFooter'=>false
                ],
            ]); Pjax::end(); 

模态

Modal::begin([
                'id' => 'modal_cschemedetail',
                'header' => '<h4>Category</h4>',
            ]);
            echo '<div id="modal-content"></div>';
            echo Html::button('Add Selected', [
                                    'id'    => 'addCommissionsButton',
                                    'class' => 'btn btn-success btn-ajax-modal'
                                ]);
            Modal::end();
            ?>
            </div>
        </div>
        <div class="box-body">
    </div>
</div>

选择网格

<?php Pjax::begin(); echo GridView::widget([
    'id'        =>  'gridCommissionSelection',
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\CheckboxColumn'],
        ['class' => 'yii\grid\SerialColumn'],

        [
            'attribute' => 'COMMISSION_ID',
            'visible'   =>  false
        ],
        'COMMISSION_NAME',
        [
            'attribute' => 'TRANSACTION_TYPE_ID',
            'value' => 'transactionTypeName'
        ],
        'COMMISSION_DESC:ntext',
        'COMMISSION_AMOUNT',
    ]
    'responsive'=>true,
    'hover'=>true,
    'condensed'=>true,
    'floatHeader'=>true,

]); Pjax::end(); ?>


是否可以将模式中的选定记录插入到详细的网格视图中,然后在用户单击创建按钮后,网格视图中的表单和插入的记录保存到相应的表中?

如何将选定的记录插入到gridview(而不是db表,它将在用户单击创建后完成)?

【问题讨论】:

标签: php gridview yii2 crud


【解决方案1】:

我建议您简化流程。您可以在 Modal 轻松保存模型(执行插入/更新),然后刷新页面或调用 $.pjax.reload('#gridCommissionSelection') 以使用新条目重新绘制网格视图。

另一种方法是用 JS 追加新行,然后通过 AJAX 请求保存它们。我猜这将是一个相当肮脏和不清楚的解决方案:)

【讨论】:

  • 谢谢@Hutsi 的建议。我在模态中执行插入/更新的原因,因为在创建操作中,commission_id 为空,所以我无法保存模态,如果我想这样做,我想我需要更改为类似向导的条目,之后保存佣金方案,然后我显示详细条目等。
  • 您的第二个建议我认为可行,我只需要知道提交表单时是否可以将所选记录作为表单输入包含在内?
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2017-06-13
  • 2019-03-29
  • 2020-06-30
相关资源
最近更新 更多