Я пытаюсь использовать Ajax pagination в 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()
однако он не работает. Любые идеи о том, как сделать paginator cakephp, следуют моим обычным маршрутам?
Редактировать:
Вот мой код $ 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);
Я понял. Я вижу, что кто-то одобрил это, поэтому я покажу свое решение в надежде, что он сэкономит им несколько дней разочарования, пытаясь найти исправление.
В моем index.ctp я задал путь $ paginator-> options к моему 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"));
Если вы зададите параметры paginator, он должен сделать трюк. Попробуй это:
$options = array('update'=>'results','url'=> array('controller' => 'companies', 'action' => 'dashboard', 'admin' => true)); $paginator->options($options);
Это прекрасно работает для меня везде.
FYI, я использую параметр update для jQuery для обновления различных областей.