一种可能的选择是执行以下操作:
由于视频周围可能有更多的代码,而不是简单的“哪个用户有哪些视频”查找,因此视频列表操作应该在 VideosController 中。
在过去的项目中,我(在 CakePHP 1.3 中)使用前缀路由来解决其中的一些问题。
在 config/core.php 中,确保启用routing.prefixes 以包含“用户”前缀。
<?php
... in routes.php ...
Routing.prefixes = array( 'user' );
?>
在视频控制器中使用以下签名执行操作:
<?php
...
public function user_index( $userID = null ){
...
}
?>
在链接到用户视频列表的视图中,html::link 调用应类似于以下内容:
<?php
...
echo $this->Html->link( 'User\'s Videos', array(
'controller' => 'videos',
'action' => 'index',
'prefix' => 'user',
$this->Session->read( 'Auth.User.id' )
));
?>
当然,这假设您在此处使用 Auth 组件来跟踪登录的用户。用于读取经过身份验证的用户 ID 的会话帮助程序代码可能需要调整。
这可以让你a)除了启用前缀路由之外不用太担心路由,b)很快就能让你拥有像这样的漂亮链接——site.com/user/videos/index/419
将其与一些 Slug 的爱结合起来(这是我见过的最好的链接 - 数据库层不需要 slug 字段 -http://42pixels.com/blog/slugs-ugly-bugs-pretty-urls http://42pixels.com/blog/slugs-ugly-bugs-pretty-urls )
你甚至可以很容易地得到这样的网址:site.com/user/videos/index/eben-roux
只需对 app/config/routes.php 进行一点点编辑,您就可以消除 /index/ 部分,结果将是 SEO 友好且用户友好的格式:site.com/user/videos/eben-roux
http://book.cakephp.org/view/945/Routes-Configuration http://book.cakephp.org/view/945/Routes-Configuration