我确实遇到自定义路线和分页问题。我读了我能找到的每一个主题,但似乎没有人有同样的问题。
我所做的就是连接这条路线:
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而不是循环中的名称路由到同一视图,并在重定向过多后停止。
我真的不知道为什么将分页参数传递给用户名。 如果有人有想法,我做错了什么,这会让我非常开心。 : - )
答案 0 :(得分:1)
问题出在你的正则表达式:Router::connect('/a/:username/*', array('controller' => 'users', 'action' => 'view'),array('pass' => array('username'),'username' => '[^\/]+'));
或者可能是\w+
(我不知道您的用户名的标准。