【问题标题】:Cakephp, Custom Routes and Pagination - pagination params passed wrongCakephp,自定义路由和分页 - 分页参数传递错误
【发布时间】:2011-10-28 17:44:42
【问题描述】:

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

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

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

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

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

    $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>

这在链接生成的情况下也有效。分页器确实创建了想要的链接,例如

domain/username/page:2

我的问题是用户名没有正确传递。在用户/视图中调试 $this->params 时,“分页参数”的处理方式与“用户参数”的一部分一样。 在这种情况下,我得到:

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

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

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

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

【问题讨论】:

    标签: cakephp routing pagination


    【解决方案1】:

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

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

    【讨论】:

    • omg ... 非常感谢。当然是这样!我从来没有想过要改变它。 :-) 你让我的一天再次感谢
    猜你喜欢
    • 2011-04-04
    • 2011-06-29
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-07-01
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多