Как решить ошибку нумерации страниц в cakePHP с помощью модуля поиска cakeDC

я использую поисковый плагин от cakeDC (https://github.com/CakeDC/search) с cakePHP 2.3.0. Этот плагин работает нормально. У меня была небольшая ошибка в индексном действии, подобном этому. Спасибо за это.

Indirect modification of overloaded property AtlasController::$paginate has no effect [APP\Controller\AtlasController.php, line 47]

Моя индексная акция

public function index() {
    $this->Prg->commonProcess();
    $this->paginate['conditions'] = $this->Atla->parseCriteria($this->passedArgs);
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate());
    $this->set('_serialize',array('atlas'));
}

Вопрос в том, как я могу это решить? Итак, я нашел способ, который настолько прост и легок.


person amarradi    schedule 28.02.2013    source источник


Ответы (2)


Итак, это решение, которое работает в моей реализации.

Я меняю вызов paginate() из.

$this->set('atlas', $this->paginate());

к новому вызову paginate().

this->set('atlas', $this->paginate($this->Atla->parseCriteria($this->passedArgs)));

Вот новый index-action.

public function index() {
    $this->Prg->commonProcess();
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate($this->Atla->parseCriteria($this->passedArgs)));
    $this->set('_serialize',array('atlas'));
}
person amarradi    schedule 28.02.2013

Я считаю, что причина, по которой код не работал из коробки, заключается в ключе ['options']. Удалите ключ из $this->paginate['options'] и добавьте модель в качестве аргумента для разбиения на страницы в
$this->set(), и разбиение на страницы должно работать должным образом. См. пример модифицированного кода ниже.

public function index() {
    $this->Prg->commonProcess();
    $this->paginate = $this->Atla->parseCriteria($this->passedArgs);
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate('Atla'));
    $this->set('_serialize',array('atlas'));
}
person CrotchFrog    schedule 28.10.2013