Как изменить часть URL-адреса из параметров paginator в CakePHP? - PullRequest
1 голос
/ 19 февраля 2011

имеют собственную нумерацию страниц в моем виде 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

как мне избавиться от этого " index " в URL?

Ответы [ 3 ]

1 голос
/ 15 февраля 2013

У меня был случай, когда я работаю над проектом с использованием 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

1 голос
/ 19 февраля 2011

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

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

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

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

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

'url' => '/news'

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

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

0 голосов
/ 27 декабря 2016

В поле зрения:

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

В маршрутах .php:

<?php 
    Router::connect('/your-custom-url/*', array('controller' => 'Controller', 'action' => 'function'));
?>
...