Yii2:GridView,为什么有些数据键返回id,而另一些返回对象?

奥斯卡·雷耶斯(Oscar Reyes)

我一直在做一个代码,它将使用CheckboxColumn获取每个列行的数据值他们所有人都将对象模型作为值返回,但是我刚刚添加的网格之一是返回id模型而不是像其他对象那样返回对象。

代码是这样的:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'tableOptions'=>[
        'class'=>'table table-striped table-bordered table-hover',
        'data'=>[
            'selector'=>'parametros'
        ]
    ],
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'liminf',
        'limsup',
        'departamento.nombre',
        'decreto.nombre',
        'tipo.nombre',
        'subTipo.nombre',
        'caracterizacion.nombre',
        'rama.nombre',  
        [
            'class' => 'yii\grid\CheckboxColumn'
        ],
    ],
]); ?>

返回对象的其他网格具有相同的代码结构..没什么不同..甚至在模型中也是如此。搜索模型代码是这样的:

class LimitesSearch extends Limites
{
    public $departamento, $decreto, $tipo, $subTipo, $caracterizacion, $rama;

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id', 'Departamento_id', 'Decreto_id', 'Caracterizacion_id'], 'integer'],
            [['Tipo_id', 'SubTipo_id', 'Rama_id'], 'each', 'rule'=>['integer']],
            [['liminf', 'limsup'], 'number'],
            [['rama','caracterizacion','subTipo','tipo','decreto','departamento','existente'], 'safe'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @param array $params
     *
     * @return ActiveDataProvider
     */
    public function search($params)
    {
        $query = Limites::find();

        $query->joinWith(['departamento', 'decreto', 'tipo', 'subTipo', 'caracterizacion', 'rama']);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        $this->load($params);

        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        $query->andFilterWhere([
            'id' => $this->id,
            'liminf' => $this->liminf,
            'limsup' => $this->limsup,
            'Departamento_id' => $this->Departamento_id,
            'Decreto_id' => $this->Decreto_id,
            'Tipo_id' => $this->Tipo_id,
            'SubTipo_id' => $this->SubTipo_id,
            'Caracterizacion_id' => $this->Caracterizacion_id,
            'Rama_id' => $this->Rama_id,
        ]);

        $query->andFilterWhere(['like', 'existente', $this->existente]);
        $query->andFilterWhere(['like', 'departamento.nombre', $this->departamento]);
        $query->andFilterWhere(['like', 'decreto.nombre', $this->decreto]);
        $query->andFilterWhere(['like', 'tipo.nombre', $this->tipo]);
        $query->andFilterWhere(['like', 'subTipo.nombre', $this->subTipo]);
        $query->andFilterWhere(['like', 'caracterizacion.nombre', $this->caracterizacion]);
        $query->andFilterWhere(['like', 'rama.nombre', $this->rama]);

        return $dataProvider;
    }
}

和控制器/功能:

public function actionSelect()
{
    if(Yii::$app->user->can('limites-index'))
    {    
        $searchModel = new LimitesSearch();
        $dataProvider = $searchModel->search(['LimitesSearch'=>Yii::$app->request->queryParams]);
        return $this->renderAjax('select', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
}

PS:我注意到,只有dataProvider关系表模型中的网格才返回对象,而这个实际上不是关系表模型的对象只是返回id ..为什么会这样?..不知道,也许我可以解决通过添加一个CheckboxColumn选项功能..但我想知道为什么会这样

编辑:这是我想要得到的..这来自关系表模型

<tr data-key="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:3}"><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 2 Aspectos Microbiologicos</td><td><input name="selection[]" value="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:3}" type="checkbox"></td></tr>
<tr data-key="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:4}"><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 3 - Aspectos organolépticos, físi...</td><td><input name="selection[]" value="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:4}" type="checkbox"></td></tr>
<tr data-key="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:5}"><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 4 - Los aspectos radiactivos</td><td><input name="selection[]" value="{&quot;Decreto_id&quot;:1,&quot;Tipo_id&quot;:5}" type="checkbox"></td></tr>

但这是我从非关系表模型呈现的表中得到的

<tr data-key="1104"><td>1</td><td>0</td><td>0</td><td>Agua</td><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 2 Aspectos Microbiologicos</td><td>Articulos 8, 9,10,11,12,13</td><td>Organismos coliformes</td><td>NULL</td><td><input name="selection[]" value="1104" type="checkbox"></td></tr>
<tr data-key="1105"><td>2</td><td>0</td><td>5</td><td>Agua</td><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 2 Aspectos Microbiologicos</td><td>Articulos 8, 9,10,11,12,13</td><td>Organismos coliformes Totales</td><td>NULL</td><td><input name="selection[]" value="1105" type="checkbox"></td></tr>
<tr data-key="1106"><td>3</td><td>0</td><td>0</td><td>Agua</td><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 2 Aspectos Microbiologicos</td><td>Articulos 8, 9,10,11,12,13</td><td>Examen Virus</td><td>NULL</td><td><input name="selection[]" value="1106" type="checkbox"></td></tr>
<tr data-key="1107"><td>4</td><td>0</td><td>0</td><td>Agua</td><td>Normas Sanitarias de Calidad del Agua Potable</td><td>Capitulo 2 Aspectos Microbiologicos</td><td>Articulos 8, 9,10,11,12,13</td><td>Examen de Bacterias</td><td>NULL</td><td><input name="selection[]" value="1107" type="checkbox"></td></tr>

如你看到的。复选框中的第一个表中的值和data-key值具有JSON对象..但在第二个表中仅具有该行的ID

阿罗加切夫

data-key data属性保存与GridView的每一行相关的记录的主键值。

在单个主键的情况下,它是一个简单的数字;在复合主键的情况下(例如,用于具有多对多关系的表中),它是对象,因为否则无法解决它。在这两种情况下,由于它是属性值,因此在DOM中仍然是字符串。

它在yii.gridView.js中用于通过yii \ grid \ CheckboxColumn获取选定的行

getSelectedRows: function () {
    var $grid = $(this);
    var data = gridData[$grid.attr('id')];
    var keys = [];
    if (data.selectionColumn) {
        $grid.find("input[name='" + data.selectionColumn + "']:checked").each(function () {
            keys.push($(this).parent().closest('tr').data('key'));
        });
    }
    return keys;
},

当您以如下方式在Javascript中选择行时,将调用此方法:

$('#grid').yiiGridView('getSelectedRows');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么有些方法在原地修改调用对象,而另一些方法返回要分配的值?

来自分类Dev

返回关键字:为什么有些语言有它,而另一些却没有?

来自分类Dev

TRegistry-为什么有些键可读,而另一些则不可读?

来自分类Dev

TRegistry-为什么有些键可读,而另一些则不可读?

来自分类Dev

为什么有些程序在从终端调用时返回,而另一些程序仅在包含“&”的情况下返回

来自分类Dev

为什么有些程序立即返回外壳程序,而另一些程序直到执行完成才返回外壳程序?

来自分类Dev

为什么有些信号被束缚而另一些则没有束缚?

来自分类Dev

为什么有些内存地址报告为常量,而另一些则更改?

来自分类Dev

为什么有些程序需要-h而另一些则不需要

来自分类Dev

为什么有些git命令具有单个-用于其他选项,而另一些具有-

来自分类Dev

为什么有些程序以未定义的行为执行而另一些却没有呢?

来自分类Dev

为什么有些类需要main方法,而另一些则不需要呢?

来自分类Dev

为什么有些方法使用点符号,而另一些却不使用点符号?

来自分类Dev

为什么有些类需要main方法,而另一些则不需要呢?

来自分类Dev

为什么有些程序需要Path值,而另一些程序在Windows中却不需要?

来自分类Dev

为什么有些角度指令需要双重卷曲,而另一些则不需要?

来自分类Dev

为什么有些别名在xterm中起作用,而另一些别名却不起作用?

来自分类Dev

为什么我的一些圈子消失了,而有些则没有?

来自分类Dev

应用程序请求路由:为什么有些站点返回 HTTP 404 有些不返回?

来自分类Dev

为什么有些命令选项带有一个破折号而另一些命令带有两个破折号

来自分类Dev

键(和一些其他对象)的object_id始终相同。这是为什么?

来自分类Dev

键(和一些其他对象)的object_id始终相同。这是为什么?

来自分类Dev

为什么有些链接框架看起来像是Lego,而另一些框架却像工具箱?

来自分类Dev

为什么有些表达式记录结果而另一些表达式仅显示迭代计数?

来自分类Dev

NetBeans,为什么有些项目显示为咖啡杯,而另一些项目显示为文件夹?

来自分类Dev

Excel 2013-为什么有些空白单元格充当“ 0”,而另一些空白单元格充当“”?

来自分类Dev

定义 SHELL:为什么有些目标会因错误“无效语法”而失败,而另一些则不会失败?

来自分类Dev

对于django单元测试,为什么有些测试运行者考虑了生产数据库,而另一些却没有呢?

来自分类Dev

对于django单元测试,为什么有些测试运行者考虑了生产数据库,而另一些却没有呢?

Related 相关文章

  1. 1

    为什么有些方法在原地修改调用对象,而另一些方法返回要分配的值?

  2. 2

    返回关键字:为什么有些语言有它,而另一些却没有?

  3. 3

    TRegistry-为什么有些键可读,而另一些则不可读?

  4. 4

    TRegistry-为什么有些键可读,而另一些则不可读?

  5. 5

    为什么有些程序在从终端调用时返回,而另一些程序仅在包含“&”的情况下返回

  6. 6

    为什么有些程序立即返回外壳程序,而另一些程序直到执行完成才返回外壳程序?

  7. 7

    为什么有些信号被束缚而另一些则没有束缚?

  8. 8

    为什么有些内存地址报告为常量,而另一些则更改?

  9. 9

    为什么有些程序需要-h而另一些则不需要

  10. 10

    为什么有些git命令具有单个-用于其他选项,而另一些具有-

  11. 11

    为什么有些程序以未定义的行为执行而另一些却没有呢?

  12. 12

    为什么有些类需要main方法,而另一些则不需要呢?

  13. 13

    为什么有些方法使用点符号,而另一些却不使用点符号?

  14. 14

    为什么有些类需要main方法,而另一些则不需要呢?

  15. 15

    为什么有些程序需要Path值,而另一些程序在Windows中却不需要?

  16. 16

    为什么有些角度指令需要双重卷曲,而另一些则不需要?

  17. 17

    为什么有些别名在xterm中起作用,而另一些别名却不起作用?

  18. 18

    为什么我的一些圈子消失了,而有些则没有?

  19. 19

    应用程序请求路由:为什么有些站点返回 HTTP 404 有些不返回?

  20. 20

    为什么有些命令选项带有一个破折号而另一些命令带有两个破折号

  21. 21

    键(和一些其他对象)的object_id始终相同。这是为什么?

  22. 22

    键(和一些其他对象)的object_id始终相同。这是为什么?

  23. 23

    为什么有些链接框架看起来像是Lego,而另一些框架却像工具箱?

  24. 24

    为什么有些表达式记录结果而另一些表达式仅显示迭代计数?

  25. 25

    NetBeans,为什么有些项目显示为咖啡杯,而另一些项目显示为文件夹?

  26. 26

    Excel 2013-为什么有些空白单元格充当“ 0”,而另一些空白单元格充当“”?

  27. 27

    定义 SHELL:为什么有些目标会因错误“无效语法”而失败,而另一些则不会失败?

  28. 28

    对于django单元测试,为什么有些测试运行者考虑了生产数据库,而另一些却没有呢?

  29. 29

    对于django单元测试,为什么有些测试运行者考虑了生产数据库,而另一些却没有呢?

热门标签

归档