How to change this JSON object?

6

I have a problem with this:

I am using CakePHP and sending JSON to a datagrid of EasyUI as follows:

$rows = $this->Produto->find('all', array('fields' => array(
   'id', 'codigo_produto', 'codigo_pedido'
)));
$total = $this->Produto->find('count');
return new CakeResponse(
    array('type' => 200,
          'body' =>  json_encode(array('rows' => $rows,
                                       'total' => $total)
                                 )
    )
); 

But my biggest problem is that it is being sent this way:

{
    "rows": [
        {
            "Produto": {
                "id": "28",
                "codigo_produto": "01.02.00.0001",
                "codigo_pedido": "123521"
            }
        },
        {
            "Produto": {
                "id": "29",
                "codigo_produto": "",
                "codigo_pedido": ""
            }
        },
        {
            "Produto": {
                "id": "30",
                "codigo_produto": "03.02.01.0000",
                "codigo_pedido": "12351"
            }
        },
        {
            "Produto": {
                "id": "31",
                "codigo_produto": "02.01.00.2541",
                "codigo_pedido": "12351"
            }
        }
    ],
    "total": 4
}

But datagrid EasyUI can only load if data is like this:

{
    "rows": [
        {
            "id": "28",
            "codigo_produto": "01.02.00.0001",
            "codigo_pedido": "123521"
        },
        {
            "id": "29",
            "codigo_produto": "",
            "codigo_pedido": ""
        },
        {
            "id": "30",
            "codigo_produto": "03.02.01.0000",
            "codigo_pedido": "12351"
        },
        {
            "id": "31",
            "codigo_produto": "02.01.00.2541",
            "codigo_pedido": "12351"
        }
    ],
    "total": 4
}

Cake sends as an object but I'm not able to treat it in Javascript for it to change after receiving neither in the php of the cake before sending. Anyone have any advice there?

The datagrid has no secret:

 $(function () {
    $('#dg').datagrid({
        url: '<?php echo $this->Html->url(array('action' => 'get_data')); ?>',
        pagination: true,
        columns: [[
            {field: 'id', title: 'id', width: 100},
            {field: 'codigo_produto', title: 'codigo produto', width: 100},
            {field: 'codigo_pedido', title: 'codigo pedido', width: 100, align: 'center'}
        ]]
    });
});
    
asked by anonymous 29.09.2015 / 15:02

1 answer

3

Looking at the documentation for .map()

29.09.2015 / 16:23