Cakephp,Custom Routes和Pagination - 分页符号错误传递

时间:2011-08-17 08:51:08

标签: cakephp routing pagination

我确实遇到自定义路线和分页问题。我读了我能找到的每一个主题,但似乎没有人有同样的问题。

我所做的就是连接这条路线:

Router::connect('/a/:username/*', array('controller' => 'users', 'action' => 'view'),array('pass' => array('username'),'username' => '[^-]+'));

这完全适用于我的用户(我将用户/视图操作更改为接受用户名而不是ID)。

但我们的用户个人资料是一种博客,您可以在其中对用户的所有帖子进行分页。 所以ich改变了这个分页链接:

    $paginator->options(array('url'=> array('controller' => 'users',
                                            'action' => 'view',
                                            'username' => strtolower($user['User']['username']) ,
                                        ),
    ));

<div class="pagination">
    <?php if($this->Paginator->hasPrev()): ?>
    <?php echo $this->Paginator->prev(__('Previous', true), null, null, array('class' => 'disabled')); ?>
    <?php endif;?>
    <?php echo $this->Paginator->numbers(array('separator' => '')); ?>
    <?php if($this->Paginator->hasNext()): ?>
    <?php echo $this->Paginator->next(__('Next', true), null, null, array('class' => 'disabled')); ?>
    <?php endif; ?>
</div>

这也适用于链接生成。 paginator确实创建了想要的链接,如

domain/username/page:2

我的问题是用户名未正确传递。当在用户/视图中调试$ this-&gt; params时,“分页参数”被处理为“用户参数”的一部分。 在这种情况下,我得到:

[controller] => users
[action] => view
[username] => tim/page:2
[named] => Array
    (
    )

[pass] => Array
    (
        [0] => tim/page:2
    )

其中tim是用户名和页面:2只是分页参数。但由于某种原因,两个参数都写入一个而不是用户名写入“用户名”,页面写入命名页面参数。 在拒绝调用的用户/视图操作(cos没有这样的用户)之后,应用程序尝试使用user-id而不是循环中的名称路由到同一视图,并在重定向过多后停止。

我真的不知道为什么将分页参数传递给用户名。 如果有人有想法,我做错了什么,这会让我非常开心。 : - )

1 个答案:

答案 0 :(得分:1)

问题出在你的正则表达式:Router::connect('/a/:username/*', array('controller' => 'users', 'action' => 'view'),array('pass' => array('username'),'username' => '[^\/]+'));

或者可能是\w+(我不知道您的用户名的标准。