2010-12-01 23 views
1

我正在使用CakePHP和jqGrid,但是我有一段困难的时间让他们说得很好。我可以经历构建JSON响应的麻烦(我知道,“这并不困难”)),但我宁愿简单地从find(“all”...)返回一个扁平版本的结果。CakePHP和jqGrid

这里是我当前的代码(仅选择的领域我想)。有没有一种快速简便的方式来格式化jqGrid的这个很好?

$result = $this->Contact->find('all', array(
       'fields' => array('first_name', 'last_name', 'company', 'title'), 
       'conditions' => array('OR' => $filters), 
       'offset' => $skip, 
       'limit' => $rows 
       )); 

在此先感谢!

编辑

我能够把这个结果到一个数组如jQuery想要它,但现在我得到一个空白表(表呈现,但所有单元格为空)。这是我的更新代码,有什么想法?

$result = $this->Contact->find('all', $options); 

$data = array(); 
for ($i = 0; $i < count($result); $i++) { 
    $data[$i]['id'] = $result[$i]['Contact']['id']; 
    $data[$i]['cell'] = $result[$i]["Contact"]; 
} 

$result = array(
    'rows' => $data, 
    'page' => $page, 
    'total' => ceil($totalPages/$rows), 
    'records' => $totalPages 
); 

这里是JSON的剪断:

{ 
    "rows":[ 
     { 
     "id":"2160", 
     "cell":{ 
      "first_name":"Rory", 
      "last_name":"Johnson", 
      "company":"somewhere", 
      "title":"Director of Engineering", 
      "id":"2160" 
     } 
     }, 
     { 
     "id":"2297", 
     "cell":{ 
      "first_name":"Steven", 
      "last_name":"Johnson", 
      "company":"Another place", 
      "title":"Dir Busn Proc Desgn", 
      "id":"2297" 
     } 
     } 
    ], 
    "page":"1", 
    "total":"75", 
    "records":"748" 
} 

回答

1

作为一些会注意到,我对细胞的关联数组。最后我做以下,以得到它的工作:

在我的PHP我改变了阵列将上升一个层次:

for ($i = 0; $i < count($result); $i++) { 
    $data[$i] = $result[$i]["Contact"]; 
} 

在我的JavaScript我改变了JsonReader默认值之一:

... 
    jsonReader: { 
     repeatitems: false 
    }, 
... 
0

退房Integration of Cakephp and JqGrid使用CakePHP 1.1完成。但它可以简单地转换为Cakephp 1.2。希望这可以帮助。

+0

唯一的问题是新的API返回jqGrid无法识别的多维数组。 – Benny 2010-12-01 15:29:53

+0

@Benny:如果您发布了JSON数据(您可以使用http://www.fiddler2.com/fiddler2/的Fiddler或http://getfirebug.com/的Firebug查看从服务器发送的数据)并发布jqGrid的定义可以帮助你包含读取数据的`jsonReader`。 – Oleg 2010-12-01 19:22:14

0

我认为你要格式化的JSON数组作为这样JSON Array Formatting

看到整个线程看到的解决办法..

希望有帮助!