使用Ext js通过网格问题显示数据

时间:2011-09-01 11:33:31

标签: php sql cakephp extjs integration

我使用extjs网格视图创建cakephp。

为此我创造,

1)我写的一个movie_controller控制器文件

function index() {
        $this->recursive = 0;                                      
        $this->set('movies', $this->Movie->find("all"));

    }

2)在view / movies / index.ctp

中创建第二个index.ctp文件
 <?php echo  '{"rows":'.$javascript->Object($movies).'}'; ?>

3)然后在js文件中我调用这个index.ctp文件

没有在网格中获取数据。 在firebug中调试时,它会显示这个数组

{&#34;行&#34;:[{&#34;电影&#34; {&#34; ID&#34;:&#34; 1&#34;&#34;日期_&#34 ;:&#34; 1970-01-01&#34;&#34;笔记&#34;:&#34; Note13455 - &#34;&#34; ASSET_ID&#34;:&#34; 1&# 34;,&#34; maint_picture&#34;:&#34;&#34;&#34; maint_condition1&#34;:&#34;差&#34;&#34; maint_condition2&#34;:&# 34;新&#34;&#34; maint_condition3&#34;:&#34;优秀&#34;&#34; maint_condition4&#34;:&#34;好&#34;}},{&#34;电影&# 34;:{&#34; ID&#34;:&#34; 2&#34;&#34;日期_&#34;:&#34; 2009-03-20&#34;&#34;笔记&# 34;:&#34;注2&#34;&#34; ASSET_ID&#34;:&#34; 1&#34;&#34; maint_picture&#34;:空,&#34; maint_condition1&#34 ;: &#34;优异&#34;&#34; maint_condition2&#34;:&#34;优异&#34;&#34; maint_condition3&#34;:&#34;新&#34;&#34; maint_condition4& #34;:&#34;差&#34;}}]}

==&gt;在这个json文件中,如何删除在启动所有记录中显示的Movie数组。

3 个答案:

答案 0 :(得分:0)

<?php echo  '{"rows":'.$javascript->Object($movies['Movie']).'}'; ?>

答案 1 :(得分:0)

如果要从数组中删除第一个数组,我们必须在网格中逐个数组打印。  它完成了。

<?php
$output='{"rows":[';
$total=$ta=count($movies);
for($i=0;$i<$total;$i++)
{
$t=$i+1;
  if($t==$total)
  {
    $output.=$javascript->Object($movies[$i]['Movie']);
  }
  else
  {
    $output.=$javascript->Object($movies[$i]['Movie']).',';
  }
}
$output.=']}';

echo $output;
 ?>  

答案 2 :(得分:0)

你越走越近了。尝试使用控制器中的$movies变量完成所有工作(记住MVC模式!不要破坏它!)。

您可以通过执行类似......

之类的操作来完成此操作
// in your controller
$data = null;
$movies = $this->Movie->find('all');

foreach ($movies as $key => $value) {
    foreach ($value['Movie'] as $k => $v {
        $data['rows'][$key][$k] = $v;
    }
}

然后将其转换为json对象。

基本上我认为它没有加载数据,因为你的json看起来像这样

{ “行”:[{ “电影”:{ “ID”: “1”, “日期_”: “1970-01-01”, “注释”: “Note13455 - ”, “ASSET_ID”:“1 “,”maint_picture“:”“,”maint_condition1“:”差“,”maint_condition2“:”新“,”maint_condition3“:”优秀“,”maint_condition4“:”好“}},{”电影“:{” ID “:” 2" , “日期_”: “2009-03-20”, “注意事项”: “注2”, “ASSET_ID”: “1”, “maint_picture”:空, “maint_condition1”: “优秀”,” maint_condition2 “:” 优”, “maint_condition3”: “新”, “maint_condition4”: “差”}}]}

它看起来应该是这样的

{ “rows”:[{     “ID”: “1”,     “日期_”: “1970-01-01”,     “注意事项”:“Note13455-”     “ASSET_ID”: “1”,     “maint_picture”: “”,     “maint_condition1”: “可怜”,     “maint_condition2”:“新”,     “maint_condition3”: “优秀”,     “maint_condition4”: “好” },{     “ID”: “2”,     “日期_”: “2009-03-20”,     “注意事项”:“注2”     “ASSET_ID”: “1”,     “maint_picture”:空,     “maint_condition1”: “优秀”,     “maint_condition2”: “优秀”,     “maint_condition3”: “新”,     “maint_condition4”: “可怜” } ]}

您想删除"Movies": {..object..}部分,因此它只是一个对象数组,如{id: 1},{id: 2},{id: 3}等。

确保在JsonReader中将行设置为root !!

var reader = new Ext.data.JsonReader({
    root: 'rows'
});