2015-01-14 4 views
3

Я пытаюсь сделать пользовательские Разбивать на CakePHP, дело в том, что я хочу передать пользовательские условия, что-то вроде этого:Установить условия для пагинацией

$conditions['People'] = $this->People->find('all', 
    array(
     'order' => array('People.id DESC'), 
     'limit' => 16, 
     'order' => 'People.id DESC' 
    ) 
); 

$people = $this->paginate('People',$conditions); 

Это в основном весь код включая нумерацию страниц, но не работает, он бросает, что он не находит столбец Люди ...

Я просто хочу сделать разбиение на страницы с пользовательскими условиями, то есть я хочу установить условия заранее, есть ли способ сделать что?

ответ

3

Хорошо, я решил это, это то, что я сделал: Сначала я объявляю если вы хотите:

public $paginate = array('People'=>array(
     'limit' => 6, 
     'order' => 'People.id DESC' 
    )); 

затем, всякий раз, когда я хотите изменить что-то, я просто делаю:

$this->paginate['People']['limit'] = 12; 
+0

Хорошо приятно. Приятно слышать, что вы его работали. –

4

Вы ознакомились с документацией?

Согласно документации, вы должны добавить условия, как это:

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

Так догадываюсь это должно работать:

public function list_people() { 
    $this->Paginator->settings = array('order' => array('People.id DESC'),'limit' => 16,'order' => 'People.id DESC'); 
    $data = $this->Paginator->paginate('People'); 
    $this->set(compact('data')); 
} 
+0

Хорошо, я сделал это, но теперь я получаю «Косвенное изменение перегруженной Inf недвижимости oController :: $ Paginator не влияет » Я попытался решить эту проблему, используя документацию, выполнив« $ this-> Paginator = array(); » но ничего ... – WhiteFloater

+1

Добавьте компонент Paginator и прочитайте документацию. – burzum

4

вот как я это делаю в торт 2.x

первую очередь обязательно включать компонент Paginator и помощник в контроллере, как

$public $components = array(
    'Paginator' 
); 

$public $helpers = array(
    'Paginator' 
); 

затем в своем действии

$options = array(
    'conditions' => array(
     'Post.status' => 1 
    ), 
    'fields' => array(
     'Post.id', 
     'Post.title', 
     'Post.created' 
    ), 
    'order' => array(
     'Post.created' => 'DESC' 
    ), 
    'limit' => 10 
); 

$this->Paginator->settings = $options; 
$posts = $this->Paginator->paginate('Post'); 
Смежные вопросы