как изменить часть URL-адреса из параметров paginator cakephp?

иметь пользовательскую разбивку на страницы в моем представлении cakephp. до этого я внес некоторые изменения в маршрутизацию.

проблема в том, что ссылки ведут на такие страницы, как

http://localhost/myapp/foos/view/news/page:2

вместо

http://localhost/myapp/news/page:2

поэтому часть с foos/view/ не обязательно должна быть частью ссылки.

попытался изменить URL-адрес с несколькими пользовательскими параметрами, например

$this->Paginator->options(array('url' => $this->passedArgs));

но не повезло, потому что у меня всегда есть foos/view/ в URL.

Можете ли вы помочь мне, как я могу избавиться от этого foos/view?

заранее большое спасибо!

ОБНОВЛЕНИЕ: мне удалось сделать "что-то", но этого недостаточно, добавив следующие строки:

$options = array('url'=> array('controller' => 'news' ) );
$paginator->options($options);

теперь моя ссылка выглядит так:

http://localhost/myapp/news/index/page:2

как я могу избавиться от этого «индекса» в URL-адресе?


person user198003    schedule 19.02.2011    source источник


Ответы (3)


Следующая строка больше посвящена передаче различных фрагментов информации URL в представление:

$this->Paginator->options(array('url' => $this->passedArgs));

Я думаю, что вы хотите изучить объявление помощника в вашем контроллере:

var $helpers = (
    'SomeHelper',
    'AnotherHelper',
    'Paginator' => array(
        'url' => array('controller'=>'news')
    )
);

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

'url' => '/news'

Я не использовал PaginatorHelper какое-то время, так что я мог быть вопиющим образом на неправильном пути, но я считаю, что это хорошее начало.

Кроме того, взгляните на страницу помощника Paginator, где там упоминаются $options, а затем выберите взгляните на Router::url(), как рекомендуется на предыдущей странице.

person connrs    schedule 19.02.2011
comment
tnx, но это не помогло... не могли бы вы проверить обновленную часть моего сообщения, пожалуйста? - person user198003; 20.02.2011
comment
Я обновил свой ответ, упомянув еще один метод построения URL-адреса в стиле маршрутизатора. - person connrs; 20.02.2011

У меня был случай, когда я работаю над проектом, используя CakePHP 2.1 (эта тема помечена как 1.3) с динамическим маршрутом администратора для отображения таких страниц:

Router::connect('/admin/main/*', array('controller' => 'adminPages', 'action' => 'display')); 

С параметром строки запроса, который создает динамический URL-адрес, подобный этому: http://mydomain.com/adminPages/main/...?page=1

Маршрут ссылки был неправильным для наших нужд, и я обнаружил, что могу изменить URL-адрес напрямую, используя это:

$this->Paginator->options(array(
  'url' => array(
    'controller' => 'admin/main/my-display',
  )
));

Для меня это сделало ссылку: http://mydomain.com/admin/main/my-display?page=1 — правильный URL, который мы искали. Если бы я использовал строку, как описано выше, она добавлялась бы к URL-адресу, например: http://mydomain.com/adminPages/main/.../admin/main/my-display?page=1

person kirikintha    schedule 15.02.2013

С учетом :

<?php 
    $this->Paginator->options(array('url' => array('controller' => '','action' =>'your-custom-url')));
?>

В route.php:

<?php 
    Router::connect('/your-custom-url/*', array('controller' => 'Controller', 'action' => 'function'));
?>
person Krishanu    schedule 27.12.2016
comment
4 года спустя я использую это решение, и оно работает. Спасибо. - person Michał Skrzypek; 12.03.2020