Как изменить этот объект JSON?
Я несколько дней назад с следующей проблемой: Я использую CakePHP и, отправив JSON datagrid EasyUI следующим образом:
$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)
)
)
);
Но моя самая большая проблема в том, что он отправлен следующим образом:
{
"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
}
, Но datagrid EasyUI можете загрузить, если data
я так:
{
"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 отправляет как объект, но я не в состоянии обработать в Javascript, но он изменить после получения или в php cake перед отправкой. У кого-то есть какие-то советы ai?
datagrid не имеет секрет:
$(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'}
]]
});
});
6
Author: Renan Gomes, 2015-09-29
1 answers
Глядя на документацию .map()
мне кажется, что вы можете сделать это в CakePHP:
$collection = new Collection($rows);
$new = $collection->map(function ($value, $key) {
return $value["Produto"];
});
$result = $new->toArray();
Infelismente не имею, где проверить, но все, что вам нужно будет перебирать этот массив и каждый элемент массива заменить ["Produto":{}}
объектом интерьера с ключом "Produto"
.
3
Author: Sergio, 2015-09-29 14:23:45