Ошибка разбиения на страницы при использовании с элементом - PullRequest
1 голос
/ 05 февраля 2012

У меня есть вид из таблицы, который отлично работает с нумерацией страниц (Paginator-> sort ()), когда я использую его как вид.Но когда я изменил как элемент, он выдаст ошибки:

Warning (2): array_merge() [function.array-merge]: Argument #1 is not an array [CORE\cake\libs\view\helpers\paginator.php, line 194]<br>
Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [CORE\cake\libs\view\helpers\paginator.php, line 194]<br>
Warning (2): array_merge() [function.array-merge]: Argument #1 is not an array [CORE\cake\libs\view\helpers\paginator.php, line 378]<br>
Warning (2): array_merge() [function.array-merge]: Argument #2 is not an array [CORE\cake\libs\view\helpers\paginator.php, line 378]<br>

Код точно такой же, как и раньше, но я, конечно, изменил часть кода следующим образом:

Модель: Добавлено следующее выражение

var $helpers = array('Paginator');

Контроллер: изменено предложение paginate для возврата значений в элемент

return $collaborations = $this->paginate('Collaboration');

Элемент: добавлено действие запроса в начало элемента, а другая строка - это каквызвать сортировку по номеру

<?php $collaborations = $this->requestAction('/collaborations/calendar'); ?>
<?php echo $this->Paginator->sort('Pvm','Collaboration.start_date'); ?>

Почему не работает моя функция сортировки по пагинации?Должен ли я объявить что-то еще?Я немного прогуглил и понял, что у paginator могут возникнуть проблемы с тем, чтобы увидеть / найти модель данных (где-то объявить), или что для этого потребуются некоторые параметры?

Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

Мне надоело пытаться решить эту проблему. Я изменил всю логику приложения, и теперь она работает нормально. Нет проблем с разбиением на страницы в элементах (вообще без элементов разбиения на страницы), и мне не нужно использовать метод requestAction - я прочитал, что он не очень хорош для производительности и его следует избегать. Спасибо всем за помощь:)

0 голосов
/ 05 февраля 2012

Проверка книги CakePHP: http://book.cakephp.org/1.3/en/view/1231/Pagination

Вы должны установить переменную paginate в вашем контроллере и затем использовать метод paginate для заполнения данных в представлении.

Помощники должны быть настроены в контроллере, а не в модели.

Например, ваш класс контроллера должен выглядеть следующим образом:

class ColaborationController extends AppController {
    var $paginate = array( 'limit'=>25, 'order'=>array('Colaboration.start_date'=>'asc'));

    function some_action() {
        $this->set('collaborations', $this->paginate('Collaboration'));
    }
}

И ваш взгляд:

<?php echo $this->Paginator->sort('Pvm','collaboration.start_date'); ?>
...