Несколько страниц в одном контроллере - PullRequest
1 голос
/ 25 июня 2011

Есть ли возможность использовать более одной $paginate переменной в одном контроллере?

Моя проблема в том, что у меня есть hasAndBelongsToMany-Relation между Links и Tags.Я настроил параметры нумерации страниц так, чтобы они работали с habtm:

public $paginate = array(
'limit' => 25,
'joins' => array(
    array(
        'table' => 'links_tags',
        'type' => 'inner',
        'alias' => 'LinkTag',
        'conditions' => array(
            'Link.id = LinkTag.link_id'
        )
    )
));

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

Самый простой способ решить эту проблему - использовать вторую переменную $paginate, но я не нашел решения, как я могу это сделать.

Ответы [ 2 ]

1 голос
/ 26 июня 2011

Согласно странице разбиения на страницы Cake Book ( ЗДЕСЬ ), вы можете установить разные переменные подкачки для разных моделей (все в одном контроллере):

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

class RecipesController extends AppController {
    var $paginate = array(
        'Recipe' => array (...),
        'Author' => array (...)
    );
}
1 голос
/ 26 июня 2011

Вы можете настроить методы paginate различными способами после того, как была установлена ​​переменная $ paginate, в соответствии с примерами, такими как этот в Cake Cookbook:

function list_recipes() {
    $this->paginate = array(
        'conditions' => array('Recipe.title LIKE' => 'a%'),
        'limit' => 10
    );
    $data = $this->paginate('Recipe');
    $this->set(compact('data'));
);

Я не проверял это,но я бы подумал, что вы можете поместить что-то вроде соединения, которое должно варьироваться от одного действия к другому, в вызове $ this-> paginate, а не в переменную $ paginate.Хм, мне нужно будет посмотреть, сработает ли это, - мне было бы очень полезно узнать, как это сделать, для дальнейшего использования!

...