Я хочу сделать что-то очень прямолинейное и простое. Я хочу иметь два разных набора разбитых на страницы данных на одной странице. Два разных набора зависят от разных моделей. Ради обсуждения скажем, что это Image
и Item
.
Я могу настроить два пейджера для двух моделей и получить правильный набор объектов. Я могу получить правильные ссылки на пейджер. Но когда дело доходит до фактического перехода по ссылкам на параметры, оба пейджера считывают параметры и предполагают, что они применяются к ним.
Это выглядит примерно так:
$this->paginate = array (
'Item'=>array(
'conditions'=>array('user_id'=>$id),
'limit' => 6,
'order' => array(
'Item.votes'=>'desc',
'Item.created'=>'desc'
),
'contain'=>array(
'User',
'ItemImage' => array (
'order'=>'ItemImage__imageVotes desc'
)
)
),
'Image'=>array(
'limit'=>6,
'contain'=>array(
'User',
'ItemImage'=>array('Item'),
),
'order'=>array(
'Image.votes'=>'desc',
'Image.views'=>'desc'
),
'conditions'=>array(
'Image.isItemImage'=>1,
'Image.user_id'=>$id
)
)
);
$this->set('items', $this->paginate('Item'));
$this->set('images', $this->paginate('Image'));
Это в контроллере. В представлении у меня есть ссылки сортировки, которые выглядят так:
<div class="control"><?php echo $this->Paginator->sort('Newest', 'Image.created', array('model'=>'Image')); ?></div>
Однако, это дает ссылку, которая выглядит следующим образом:
http://localhost/profile/37/page:1/sort:Image.created/direction:asc
Там нет ничего, чтобы сказать пагинатору, какую модель я собираюсь отсортировать. Поэтому, когда я нажимаю на ссылку, она пытается отсортировать обе модели по Image.created
. В результате возникает ошибка, поскольку Item
невозможно отсортировать по Image.created
. Я что-то не так делаю? Или это что-то, что не поддерживается пагинатором CakePHP?