【问题标题】:Cake php with Ext js through display data in grid ProblemCake php 与 Ext js 通过在网格中显示数据问题
【发布时间】:2011-11-08 08:09:56
【问题描述】:

我用 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 中调试时会显示这个数组

{"rows":[{"Movie":{"id":"1","date_":"1970-01-01","notes":"Note13455-","asset_id":"1 ","maint_picture":"","maint_condition1":"差","maint_condition2":"新","maint_condition3":"优秀","maint_condition4":"好"}},{"电影":{" id":"2","date_":"2009-03-20","notes":"Note2","asset_id":"1","maint_picture":null,"maint_condition1":"Excellent"," maint_condition2":"优秀","maint_condition3":"新","maint_condition4":"差"}}]}

==>在这个 json 文件中,我如何删除显示在开始所有记录中的电影数组。

【问题讨论】:

    标签: php sql cakephp extjs integration


    【解决方案1】:
    <?php echo  '{"rows":'.$javascript->Object($movies['Movie']).'}'; ?>
    

    【讨论】:

    • 如果我在 index.ctp 文件中写这个 Object($movies['Movie']).'}'; ?> 提示错误 Notice (8): Undefined index: Movie [APP\views\movies\index.ctp, line 2]{"rows":null} 表示数组返回空值。请帮忙..
    【解决方案2】:

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

    <?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;
     ?>  
    

    【讨论】:

      【解决方案3】:

      你越来越近了。尝试使用控制器中的 $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 看起来像这样

      {"rows":[{"Movie":{"id":"1","date_":"1970-01-01","notes":"Note13455-","asset_id":"1 ","maint_picture":"","maint_condition1":"差","maint_condition2":"新","maint_condition3":"优秀","maint_condition4":"好"}},{"电影":{" id":"2","date_":"2009-03-20","notes":"Note2","asset_id":"1","maint_picture":null,"maint_condition1":"Excellent"," maint_condition2":"优秀","maint_condition3":"新","maint_condition4":"差"}}]}

      应该是这样的

      { “行”:[{ "id":"1", “日期_”:“1970-01-01”, "notes":"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 中将行设置为根!!

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多