1

我正在使用通过 CakePHP 2.x 实现其 API 的第 3 方 PHP 服务器

看起来 CakePHP 接受查询参数,即使它没有在控制器端专门实现

例如,当我在浏览器中调用此 URL 时

https://server/api/logs.json?sort=TimeKey&direction=desc

它返回一个基于 TimeKey 的降序排序列表,如下所示:

{"logs":[{"Log":{"TimeKey":"1486576200.482136","Component":"zma_m5","ServerId":"0","Pid":"10931","Level":"0","Code":"INF","Message":"Deck Camera: 4138848 - Opening new event 66155, section start","File":"monitor.cpp","Line":"1532"}} <etc>

我想知道是否可以构造一个也可以应用“条件”的查询 URL,即只显示“代码 = ERR”的字段而无需更改控制器代码?鉴于它的第 3 方,我的第一个偏好是不必更改它并通过我构建的 URL 来处理它。

控制器实现在这里

<?php
App::uses('AppController', 'Controller');

/**
 * Logs Controller
 *
 * @property Log $Log
 * @property PaginatorComponent $Paginator
 */
class LogsController extends AppController {

/**
 * Components
 *
 * @var array
 */
    public $components = array('Paginator', 'RequestHandler');
    public $paginate = array(
        'limit' => 100,
        'order' => array( 'Log.TimeKey' => 'asc' ),
        'paramType' => 'querystring'
    );

/**
 * index method
 *
 * @return void
 */
    public function index() {
        $this->Log->recursive = -1;
        $this->Paginator->settings = $this->paginate;

        $logs = $this->Paginator->paginate('Log');
        $this->set(compact('logs'));
    }

    // ...
}

我一直在尝试各种不起作用的组合(例如 &Code=ERR &Log[Code]=ERR)。谢谢。

4

1 回答 1

1

我想知道是否可以构建一个也可以应用“条件”的查询 URL [...]

我不熟悉 ZoneMinder,但通常使用引用的代码是不可能的。

默认情况下,分页器组件仅支持、sortdirection选项。limitpage

于 2017-02-08T19:29:59.920 回答