CakePHP - фильтрация параметров в переданном URL

Я работаю с сторонним PHP-сервером, который реализовал свои API через CakePHP 2.x

Похоже, 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-адрес запроса, который также может применять "условие", то есть только показать поля, где "Code=ERR" без необходимости изменения кода контроллера? Учитывая его третье лицо, я предпочитаю не менять его и обрабатывать его через мой 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), которые не работают. Благодарю.

1 ответ

Решение

Мне было интересно, если возможно построить URL-адрес запроса, который также может применить "условие" [...]

Я не знаком с ZoneMinder, но обычно это невозможно с указанным кодом.

По умолчанию компонент paginator поддерживает только sort, direction, limit а также page опции.

Другие вопросы по тегам