Yii2 - 在 Yii2 中自定义复选框列表

问题描述 投票:0回答:1

我有一个基于数组的查询:

$modelPipe = Pipe::find()
        ->select([
            "size",
            "container",
            "seal",
            "concat(container_seal, '<br>' , size) as container_seal",
            "count(size) as bundles",
            "sum(piece) as pieces",
            "bundle_group"
        ])

        ->where(['outgoing_pipe_id' => NULL])
        ->groupBy(['bundle_group'])
        ->orderBy(['bundle_group' => SORT_ASC])
        ->all();

查询结果是这样的

+-----------------------+--------------------------------------------------+---------+--------+--------------+
| size                  | container_seal                                   | bundles | pieces | bundle_group |
+-----------------------+--------------------------------------------------+---------+--------+--------------+
| 35 x 35 x 0.85 x 6000 | EITU1268671/ EMCCSQ5920<br>35 x 35 x 0.85 x 6000 |      24 |   2400 |            1 |
| 15 x 35 x 0.75 x 6000 | EITU1268671/ EMCCSQ5920<br>15 x 35 x 0.75 x 6000 |      20 |   2000 |            2 |
| 35 x 35 x 0.85 x 6000 | EITU1374987/ EMCCSQ6086<br>35 x 35 x 0.85 x 6000 |      24 |   2400 |            3 |
| 15 x 35 x 0.75 x 6000 | EITU1374987/ EMCCSQ6086<br>15 x 35 x 0.75 x 6000 |      20 |   2000 |            4 |
| 35 x 35 x 0.75 x 6000 | EITU1842100/ EMCCSQ6096<br>35 x 35 x 0.75 x 6000 |      18 |   1800 |            5 |
| 15 x 35 x 0.75 x 6000 | EITU1842100/ EMCCSQ6096<br>15 x 35 x 0.75 x 6000 |      34 |   3400 |            6 |
| 35 x 35 x 0.75 x 6000 | DRYU9850060/ EMCCSQ6056<br>35 x 35 x 0.75 x 6000 |      18 |   1800 |            7 |
| 15 x 35 x 0.75 x 6000 | DRYU9850060/ EMCCSQ6056<br>15 x 35 x 0.75 x 6000 |      34 |   3400 |            8 |
| 35 x 35 x 0.75 x 6000 | DFSU6646389/ EMCCSQ6626<br>35 x 35 x 0.75 x 6000 |      18 |   1800 |            9 |
| 15 x 35 x 0.75 x 6000 | DFSU6646389/ EMCCSQ6626<br>15 x 35 x 0.75 x 6000 |      34 |   3400 |           10 |
| 35 x 35 x 0.75 x 6000 | TCLU4970557/ EMCCSQ6006<br>35 x 35 x 0.75 x 6000 |      18 |   1800 |           11 |
| 15 x 35 x 0.75 x 6000 | TCLU4970557/ EMCCSQ6006<br>15 x 35 x 0.75 x 6000 |      34 |   3400 |           12 |
| 35 x 35 x 0.75 x 6000 | FCIU9214153/ EMCCSQ6556<br>35 x 35 x 0.75 x 6000 |      24 |   2400 |           13 |
| 15 x 35 x 0.85 x 6000 | FCIU9214153/ EMCCSQ6556<br>15 x 35 x 0.85 x 6000 |      22 |   2200 |           14 |
| 35 x 35 x 0.75 x 6000 | DFSU6912998/ EMCCSQ6536<br>35 x 35 x 0.75 x 6000 |      24 |   2400 |           15 |
| 15 x 35 x 0.85 x 6000 | DFSU6912998/ EMCCSQ6536<br>15 x 35 x 0.85 x 6000 |      22 |   2200 |           16 |
| 35 x 35 x 0.85 x 6000 | TEMU6099067/ EMCCSQ6566<br>35 x 35 x 0.85 x 6000 |       4 |    400 |           17 |
| 35 x 35 x 0.75 x 6000 | TEMU6099067/ EMCCSQ6566<br>35 x 35 x 0.75 x 6000 |      20 |   2000 |           18 |
| 15 x 35 x 0.85 x 6000 | TEMU6099067/ EMCCSQ6566<br>15 x 35 x 0.85 x 6000 |      20 |   2000 |           19 |
| 35 x 35 x 0.85 x 6000 | EITU1153733/ EMCCSQ6956<br>35 x 35 x 0.85 x 6000 |       6 |    600 |           20 |
| 15 x 35 x 0.85 x 6000 | EITU1153733/ EMCCSQ6956<br>15 x 35 x 0.85 x 6000 |      17 |   1700 |           21 |
| 15 x 35 x 0.75 x 6000 | EITU1153733/ EMCCSQ6956<br>15 x 35 x 0.75 x 6000 |      30 |   3000 |           22 |
| 15 x 35 x 0.85 x 6000 | EITU1153733/ EMCCSQ6956<br>15 x 35 x 0.85 x 6000 |       1 |      8 |           23 |
| 15 x 35 x 0.75 x 6000 | EITU1153733/ EMCCSQ6956<br>15 x 35 x 0.75 x 6000 |       1 |     26 |           24 |
+-----------------------+--------------------------------------------------+---------+--------+--------------+

问题是,我需要使用复选框列表来解释上面的数据。 所以,我这样写:

<?php
   $data = ArrayHelper::map($modelPipe, "bundle_group", "container_seal");?>

   <?= $form->field($model, 'nomors_urut_per_bundle')
       ->label(false)
       ->checkboxList($data); 
   ?>

我得到了这样的结果:

如何为我的用户获取视图,就像第一列是复选框的公用表一样? +------------------------+------------------------ ----------------------+---------+--------+----- ---------+ |选中/取消选中全部 |尺寸|容器密封 |捆绑 |件 |捆绑组 | +------------------------+------------------------ ----------------------+---------+--------+----- ---------+ |选中/取消选中 | 35×35×0.85×6000 | EITU1268671/ EMCCSQ5920
35 x 35 x 0.85 x 6000 | 24 | 2400 | 2400 1 | |选中/取消选中 | 15×35×0.75×6000 | EITU1268671/ EMCCSQ5920
15 x 35 x 0.75 x 6000 | 20 | 2000 | 2000 2 | |选中/取消选中 | 35×35×0.85×6000 | EITU1374987/ EMCCSQ6086
35 x 35 x 0.85 x 6000 | 24 | 2400 | 2400 3 | |选中/取消选中 | 15×35×0.75×6000 | EITU1374987/ EMCCSQ6086
15 x 35 x 0.75 x 6000 | 20 | 2000 | 2000 4 | |选中/取消选中 | 35×35×0.75×6000 | EITU1842100/ EMCCSQ6096
35 x 35 x 0.75 x 6000 | 18 | 18 1800 | 1800 5 | |选中/取消选中 | 15×35×0.75×6000 | EITU1842100/ EMCCSQ6096
15 x 35 x 0.75 x 6000 | 34 | 34 3400 | 3400 6 | |选中/取消选中 | 35×35×0.75×6000 | DRYU9850060/ EMCCSQ6056
35 x 35 x 0.75 x 6000 | 18 | 18 1800 | 1800 7 | |选中/取消选中 | 15×35×0.75×6000 | DRYU9850060/ EMCCSQ6056
15 x 35 x 0.75 x 6000 | 34 | 34 3400 | 3400 8 | |选中/取消选中 | 35×35×0.75×6000 | DFSU6646389/ EMCCSQ6626
35 x 35 x 0.75 x 6000 | 18 | 18 1800 | 1800 9 | |选中/取消选中 | 15×35×0.75×6000 | DFSU6646389/ EMCCSQ6626
15 x 35 x 0.75 x 6000 | 34 | 34 3400 | 3400 10 | 10 |选中/取消选中 | 35×35×0.75×6000 | TCLU4970557/ EMCCSQ6006
35 x 35 x 0.75 x 6000 | 18 | 18 1800 | 1800 11 | 11 |选中/取消选中 | 15×35×0.75×6000 | TCLU4970557/ EMCCSQ6006
15 x 35 x 0.75 x 6000 | 34 | 34 3400 | 3400 12 | 12 |选中/取消选中 | 35×35×0.75×6000 | FCIU9214153/ EMCCSQ6556
35 x 35 x 0.75 x 6000 | 24 | 2400 | 2400 13 | |选中/取消选中 | 15×35×0.85×6000 | FCIU9214153/ EMCCSQ6556
15 x 35 x 0.85 x 6000 | 22 | 22 2200 | 2200 14 | 14 |选中/取消选中 | 35×35×0.75×6000 | DFSU6912998/ EMCCSQ6536
35 x 35 x 0.75 x 6000 | 24 | 2400 | 2400 15 | 15 |选中/取消选中 | 15×35×0.85×6000 | DFSU6912998/ EMCCSQ6536
15 x 35 x 0.85 x 6000 | 22 | 22 2200 | 2200 16 | 16 |选中/取消选中 | 35×35×0.85×6000 | TEMU6099067/ EMCCSQ6566
35 x 35 x 0.85 x 6000 | 4 | 400 | 17 | 17 |选中/取消选中 | 35×35×0.75×6000 | TEMU6099067/ EMCCSQ6566
35 x 35 x 0.75 x 6000 | 20 | 2000 | 2000 18 | 18 |选中/取消选中 | 15×35×0.85×6000 | TEMU6099067/ EMCCSQ6566
15 x 35 x 0.85 x 6000 | 20 | 2000 | 2000 19 | 19 |选中/取消选中 | 35×35×0.85×6000 | EITU1153733/ EMCCSQ6956
35 x 35 x 0.85 x 6000 | 6 | 600 | 20 | |选中/取消选中 | 15×35×0.85×6000 | EITU1153733/ EMCCSQ6956
15 x 35 x 0.85 x 6000 | 17 | 17 1700 | 1700 21 | 21 |选中/取消选中 | 15×35×0.75×6000 | EITU1153733/ EMCCSQ6956
15 x 35 x 0.75 x 6000 | 30| 3000 | 3000 22 | 22 |选中/取消选中 | 15×35×0.85×6000 | EITU1153733/ EMCCSQ6956
15 x 35 x 0.85 x 6000 | 1 | 8 | 23 | 23 |选中/取消选中 | 15×35×0.75×6000 | EITU1153733/ EMCCSQ6956
15 x 35 x 0.75 x 6000 | 1 | 26 | 26 24 | +------------------------+------------------------ ----------------------+---------+--------+----- ---------+

php yii2
1个回答
1
投票

您可以在 GridView 中使用普通的

yii\grid\CheckboxColumn
列,只需使用
['class' => 'yii\grid\CheckboxColumn']
http://www.yiiframework.com/doc-2.0/yii-grid-checkboxcolumn.html

最终您可以使用回调函数来管理适当的选项,例如:

  echo GridView::widget([
     'id' => 'griditems',
     'dataProvider' => $dataProvider,
     'columns' => [
         .......
        [
            'class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => function($model) {
                  return ['value' => $model->your_value];
              },
        ],
     ],
  ]);
© www.soinside.com 2019 - 2024. All rights reserved.