2

我正在(与合作伙伴)开发一个将使用 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调用中?它应该如何在控制器中破译?

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

4

1 回答 1

3

在你的控制器中

$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());
于 2013-02-27T15:48:51.920 回答