Создайте собственный маршрут разбивки на страницы CakePHP - PullRequest
1 голос
/ 26 октября 2010

Я пытаюсь использовать Ajax-нумерацию в CakePHP и прочитал, что вы можете передавать переменные в URL-адресе, однако я не могу установить маршрут. Когда я нажимаю «Далее», я получаю сообщение о том, что категория не существует (из-за созданного мной пользовательского метода проверки), поскольку маршрут не выполняется.

Я бы хотел, чтобы $paginator->next() и $paginator->prev() следовали этой схеме маршрутов. http://mysite.com/computers/page:2 или http://mysite.com/computers/mac/page:2. Однако независимо от того, что я установил для URL-адреса нумерации страниц, он всегда будет http://mysite.com/Products/index/page:2. Я попытался установить URL в $paginator->options() и в $paginator->next() и $paginator->prev(), однако он не работает. Любые идеи о том, как сделать так, чтобы CakePHP Paginator следовал моим маршрутам?

Edit:

Вот мой код $ paginator, который находится в представлении.

$paginator->options(array(

    'update' => '#products',
    'url' => array('controller'=>'Products','action'=>'index','pass'=>$this->params['pass']),
    'evalScripts' => true,
    'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
    'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));
     echo $paginator->prev("Prev",$this->passedArgs);
     echo $paginator->numbers(array('separator'=>' '));
     echo $paginator->next("Next",$this->passedArgs);

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Я понял это.Я вижу, что кто-то одобрил это, поэтому я покажу свое решение в надежде, что это сэкономит им несколько дней разочарования, пытаясь найти решение.

В моем index.ctp я установил путь к параметрам $ paginator->мой URL мне нужен.

$paginator->options(array(

    'update' => '#products',
    'url' => array('path'=>$this->params['path']),
    'evalScripts' => true,
    'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
    'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
));

Редактировать: Я только что узнал, что это работает, только если вы не добавляете ничего в поле URL ...: - (

Редактировать 2:Я закончил тем, что сделал это в своем представлении, где создается $ pagination.

$paginator->options(array(

    'update' => '#products',
    'url' => '/'.$this->here,
    //'evalScripts' => true,
    'before' => $this->Js->get('.clothing')->effect('fadeOut', array('speed' => 'slow')),
    'complete' => $this->Js->get('.clothing')->effect('fadeIn', array('speed' => 'slow')),
));
     echo str_replace('/Products/index','',$paginator->prev("Prev "));
     echo str_replace('/Products/index','',$paginator->numbers(array('separator'=>' - ')));
     echo str_replace('/Products/index','',$paginator->next(" Next"));
0 голосов
/ 26 октября 2010

Если вы установили параметры paginator, это должно сработать. Попробуйте это:

$options = array('update'=>'results','url'=> array('controller' => 'companies', 'action' => 'dashboard', 'admin' => true));
$paginator->options($options);

Это прекрасно работает для меня везде.

К вашему сведению, я использую параметр update с jQuery для обновления различных областей.

...