开发者

how to change part of url from cakephp's paginator options?

have custom pagination in my cakephp view. before that i made some custom routing changes.

problem is that links leads to pages like

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

instead of

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

so, part with foos/view/ not have to be part of the link.

tried to change url with several custom options, like

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

but no luck, because i always have foos/view/ in url.

can you help me how can i get rid of that foos/view?

thank you very much in advance!

UPDATE: i manage to do "some开发者_如何学JAVAthing", but not enough, by adding following lines:

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

now, my link looks like:

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

how can i get rid of that "index" in url?


The following line is more about passing various pieces of URL information to the view:

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

I think what you want to look into is the helper declaration in your Controller:

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

If you want finer control of a custom route like the one you have then try

'url' => '/news'

I haven't used PaginatorHelper in a while - so I could be egregiously on the wrong track - but I believe that's a good start.

Also, take a look at the Paginator Helper page for where it mentions $options and then take a look at Router::url() as the former page recommends.


I had a case where I am working on a project using CakePHP 2.1 (This thread is tagged as 1.3) with a dynamic admin route to display pages like this:

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

With a query string parameter, that produces a dynamic url like this: http://mydomain.com/adminPages/main/...?page=1

The link route, was incorrect for our needs and found I could alter the url directly by using this:

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

For me it made a link: http://mydomain.com/admin/main/my-display?page=1 - which was the correct url we were looking for. If I used a string, as described above, it appends itself to the url, like: http://mydomain.com/adminPages/main/.../admin/main/my-display?page=1


In view :

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

In routes.php :

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜