2015-08-07 4 views
2

В настоящее время я работаю над системой галереи, использующей cakephp. В нем мы разбиваем каждый альбом с изображениями, чтобы каждая страница содержала максимальное количество изображений. Я достиг этого, используя:Cakephp - Получение элементов со следующей страницы на текущей странице?

$this->paginate = array(
    'conditions' => array(
     'Item.album_id' => $id 
    ), 
    'order' => array(
     'Item.added' => 'desc' 
    ), 
    'limit' => '50' 
); 

На моем контроллере. При этом я могу показать все элементы на каждой странице без проблем.

В настоящее время я сталкиваюсь с одной проблемой: мне нужно показать после всех элементов текущей страницы кнопку, ведущую на следующую страницу. Это не проблема, за исключением того, что по дизайну кнопка, которая говорит, что NEXT PAGE должна иметь элемент со следующей страницы в качестве фона.

Я огляделся по сторонам, пытаясь найти способ вытащить предмет со следующей страницы разбитой на страницы системы в трюме без везения. Кто-нибудь это сделал, или кто-нибудь знает, как это сделать?

ответ

1

Вы должны запросить изображение предварительного просмотра вручную на текущей странице. Для доступа к номеру страницы вы можете использовать $this->params в действии. Затем вам нужно запросить изображения с параметрами «limit» и «page», как указано в documentation. После этого установите URL изображения, как это:

$this->set('preview_image_url', $queried_url); 

Затем в окне просмотра использовать встроенный стиль, чтобы установить фон для следующей кнопки.

0

С помощью Альто, я в конечном итоге делает это (Собираем здесь только в случае, если кто-то задается вопросом, как именно я это сделал):

$CurrPage = $this->params['paging']['Item']['page']; 

$NextParams = array(
    'limit' => 1, 
    //'page' => $CurrPage + 1, 
    'order' => array(
     'Item.added' => 'desc' 
    ), 
    'offset' => $CurrPage*50 
    //'order' =>('rand()') 
); 
$NextImage = $this->Item->find('first', $NextParams); 

$this->set('NextImage', $NextImage); 

Это дает мне первый элемент из следующей страницы, что хорошо достаточно для меня. Обратите внимание на комментарий 'order' =>('rand()'). Я попытался захватить случайный элемент со следующей страницы, но, увы, кажется, что Cake сначала скремблирует все элементы и THEN разбивает страницы. Вероятно, есть способ обойти это, но пока это сделало это для меня.

Кроме того, использование 'page' => $CurrPage + 1, похоже, не работает, при этом система вместо этого возвращает случайно выбранное изображение. Вот почему я вместо этого отказался от использования 'offset' => $CurrPage*50, где 50 - количество элементов на странице, которую я показываю.

Смежные вопросы