如何从cakephp分页选项中更改部分网址?

时间:2011-02-19 07:18:09

标签: cakephp pagination cakephp-1.3 options

在我的cakephp视图中有自定义分页。在此之前我做了一些自定义路由更改。

问题是链接会导致像

这样的页面

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

而不是

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

所以,部分 foos / view / 不一定是链接的一部分。

尝试使用多个自定义选项更改网址,例如

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

但没有运气,因为我总是在网址上有foos / view /。

你能帮助我如何摆脱那些foos / view?

非常感谢你!

更新:我设法通过添加以下内容来做“某事”,但还不够:

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

现在,我的链接看起来像:

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

如何摆脱网址中的“索引”?

3 个答案:

答案 0 :(得分:1)

以下几行更多关于将各种URL信息传递给视图:

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

我认为您想要了解的是Controller中的帮助声明:

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

如果您希望更好地控制自己的路线,请尝试

'url' => '/news'

我有一段时间没有使用PaginatorHelper - 所以我可能会走错路 - 但我相信这是一个好的开始。

另外,请查看the Paginator Helper page提及$ options的位置,然后按照前一页建议的那样查看Router::url()

答案 1 :(得分:1)

我有一个案例,我正在使用CakePHP 2.1(此线程标记为1.3)使用动态管理路径处理项目,以显示如下页面:

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

使用查询字符串参数,可生成如下动态网址:http://mydomain.com/adminPages/main/...?page=1

链接路由对我们的需求不正确,发现我可以直接使用以下方法更改网址:

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

对我来说,它建立了一个链接:http://mydomain.com/admin/main/my-display?page=1 - 这是我们正在寻找的正确网址。如果我使用字符串,如上所述,它会将自己附加到网址,例如:http://mydomain.com/adminPages/main/.../admin/main/my-display?page=1

答案 2 :(得分:0)

在视图中:

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

在routes.php中:

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