Как я могу изменить именованный параметр в моем приложении CakePHP (1.3)? - PullRequest
1 голос
/ 29 декабря 2011

Я создаю приложение cakePHP, которое использует нумерацию страниц. В какой-то момент мне нужен контроллер для проверки определенных условий и, если они выполняются, для сброса на первую из разбитых на страницы страниц.

Другими словами, скажем, URL-адрес http://www.example.com/films/index/page:6

В контроллере фильмов у меня есть:

  function index() {
    if(conditions are met)
       $this->params['named']['page'] = 1;
  }

Идея состоит в том, что если условия соблюдены, то пагинатор покажет первую страницу результатов, а не страницу 6.

Я проверил, что условия выполняются, и параметр ['named'] ['page'] изменился, но пагинатор, похоже, игнорирует его и показывает страницу 6 независимо от этого.

Что я делаю не так?

Спасибо!

1 Ответ

3 голосов
/ 30 декабря 2011

ОК, есть два способа сделать это:

1 Изменение параметра: (Вы были близки)

function index() {
    if(conditions are met)
       $this->request->params['named']['page'] = 1;
    $this->set('films', $this->paginate()); 
}

Проблема с этим решением состоит в том, что URL останется прежним (например, .../films/index/page:6), даже когда пользователь действительно просматривает страницу 1, и это может сбить с толку.

2 Перенаправление на нужную страницу

function index() {
    if(conditions are met)
       $this->redirect(array('page' => 1));
    $this->set('films', $this->paginate()); 
}

Проблема в том, что вам нужно сделать перенаправление;)

Надеюсь, это поможет.

...