【问题标题】:Cakephp - Pagination with JSON APICakephp - 使用 JSON API 进行分页
【发布时间】:2012-09-04 09:57:09
【问题描述】:

我正在(与合作伙伴)开发一个将使用 Backbone.js 的 CakePHP 应用程序。

所以,基本上,我的蛋糕应用程序的行为很大程度上类似于 JSON API。在控制器动作加载某个视图(尚未呈现数据)后,Backbone 对另一个控制器动作进行 AJAX 调用以获取数据。控制器返回 JSON。

(routes.php 文件有 mapResources 和 parseExtensions 行)

控制器代码

public function index(){            
    $company_id = $this->Session->read('Company.id');
    $channel_ids = $this->Order->Channel->find('all', array('conditions' => array('Channel.company_id' => $company_id), 'fields' => array('Channel.id')));
    $channel_ids = Set::extract('/Channel/id', $channel_ids);        

    $data = $this->paginate('Order', array('Order.fulfillment_status_id' => 1, 'Order.channel_id' => $channel_ids));
    $this->set('orders', $data);
    //In case of a JSON request
    if($this->RequestHandler->ext == 'json') {           
        $this->autoRender = false;
        echo json_encode($data);
    }
}

这很好用,但是当我们试图用它实现分页时我们碰壁了。

  1. 我们如何生成分页链接? (如果我们通过 Backbone 进行,它不知道数据库中的总记录,因此不知道要生成多少链接)
  2. 应该如何将“页码”烧录到AJAX调用中?在控制器中应该如何破译?

真的卡在这里,我们将非常感谢您的帮助。

【问题讨论】:

标签: cakephp backbone.js


【解决方案1】:

在你的控制器中

$this->layout = false;
$this->RequestHandler->respondAs('json'); 
$recipes = $this->paginate('Recipe');
$this->set(compact('recipes'));

在你看来

echo json_encode($recipes);
echo json_encode($this->Paginator->params());

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 2011-10-14
    • 2010-12-08
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多