CakePHP: данные не отправляются в представления расширений при поиске по страницам через помощника Paginator - PullRequest
0 голосов
/ 06 декабря 2011

У меня отображается простая таблица результатов, которая разбита на страницы в записях 25. Есть 350 результатов, и следующие, 1, 2, 3-страничные навигационные ссылки отлично работают для подкачки моих данных.Чтобы повторить, я использую стандартный компонент Paginator и помощники для создания этих ссылок на пейджинг.

Проблема возникает, когда я анализирую те же результаты в моем представлении расширения и разметке .csv.Если я не щелкаю по номеру страницы (таким образом, я нахожусь на странице по умолчанию, первые 25 записей) и щелкаю свой значок экспорта в CSV, все результаты отлично отображаются в моем представлении расширения csv, и мой файл CSV успешно создается.Однако всякий раз, когда я выполняю постраничную загрузку, он больше не получает результаты, что странно.

Например: somehost.com/controller/action/1.csv отправит все записи в мое расширение csv,тогда как somehost.com/controller/action/1/page:5.csv по-прежнему выбирает представление и макет для расширения csv, но данные пустые.

Есть ли какой-то параметр конфигурации, который мне нужно добавитькомпоненту / помощнику Paginator работать с различными макетами расширений и представлениями?В конце концов, расширения (и, следовательно, макеты и представления) используют точно такой же контроллер, идея MVC заключается в том, что контроллер должен передавать данные в мое представление csv независимо от того, что.

Любая помощь, предложенияи идеи всегда ценятся.

1 Ответ

1 голос
/ 08 декабря 2011

Просто предложение для обхода проблемы:

В вашем контроллере может быть действие, которое принимает значение страницы в качестве параметра и затем передает его в находку:

function csvgenerator($page){
$this->layout = 'csvlayout';
$this->set('variableForView',$this->Model->find('all',array(
    'conditions' => array('Model.field' => $thisValue), //array of conditions
    'order' => array('Model.field1 DESC'), //string or array defining order
    'limit' => n, //int
    'page' => $page //int
));
}
...