CakePHP分页自定义URL

时间:2014-01-02 09:43:21

标签: cakephp-2.0 cakephp-2.1 cakephp-2.3

我正在尝试使用自定义网址实现分页,当我尝试分页到下一页时,我收到以下错误。

请求的地址' / adminuser / userlist / page:2'在这台服务器上找不到。

此处adminuser是admin用户的名称,userlist是获取此adminuser下所有用户的方法。

网址将如下http://domain.com/adminuser/userlist

这是我的代码

In view:

<?php $this->paginator->options(array('url' => 
array('path'=>$this->params['path']))); ?>
<div class="pagination">
    <ul>
        <li class="prevnext disablelink">
       <?php echo str_replace('/users/','',$this->paginator->prev('« Prev'));?>
        <li>
        <?php  echo str_replace('/users/','',$this->paginator->numbers());?>
        </li>
        <li class="prevnext">
        <?php  echo str_replace('/users/','',$this->paginator->next('Next »'));?>

    </ul>
</div>

routes.php文件

Router::connect('/:sluguser/:action', array('controller' => 'users', 'action' => 'userlist'),array('pass' => array('sluguser')));

1 个答案:

答案 0 :(得分:0)

对于分页,使用默认'paramType' => 'named',您需要扩展您的路线以接受page参数(以及sortdirection)。在routes.php中,您可以添加以下内容:

// Parse only default parameters used for CakePHP's pagination:
Router::connectNamed(false, array('default' => true));
// the route to your controller action and wildcard (*) for the possible named parameter
Router::connect('/:sluguser/:action/*', array('controller' => 'users', 'action' => 'userlist'),array('pass' => array('sluguser')));

顺便说一下。正如我发现最近命名的参数已被弃用且完全removed in CakePHP 3.x,因此请考虑使用$this->paginate['paramType'] = 'querystring';。然后它将在没有上述其他路线的情况下工作。