【发布时间】: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