我是Yii2的新手,以前我使用自制的mvc php+extjs 4.2
所以我现在在Yii2上工作,我开始掌握简单CRUD的窍门,当我需要为父子表制作条目表单时,我的任务就开始了。我有3张桌子
- 佣金
commission_id
佣金名称
佣金金额
佣金百分比 - 佣金方案
cscheme_id
cscheme_name
cscheme_amount
cscheme_percent
cscheme_bonus
cscheme_description - 佣金_方案_细节
cscheme_detail_id
commission_id
cscheme_id
输入表单用于commission_scheme和commission_sscheme_detail。
- 我已经使用gii生成了所有crud
- 我修改_form.php,在活动表单后添加commission_scheme_detail的网格视图
- 我还添加了包含佣金选择网格的模式
这是_form.php
网格视图
<?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(而不是数据库表,这将在用户单击创建后完成)
我建议您简化流程。您可以在Modal
中轻松保存模型(执行插入/更新),然后刷新页面或调用$.pjax.reload('#gridCommissionSelection')
以使用新条目重新绘制网格视图。
另一种方法是用JS附加新行,然后通过AJAX请求保存它们。这将是一个相当肮脏和不清楚的解决方案,我想:)