gpt4 book ai didi

model-view-controller - MVC 将 Action 放在最合适的正确 Controller 中

转载 作者:行者123 更新时间:2023-12-02 00:32:41 25 4
gpt4 key购买 nike

我只是想知道在某些情况下决定在何处创建操作/ View 的最佳实践方法是什么。

如果用户有许多视频

创建 Action / View 以显示用户视频的最佳位置在哪里?

所以在用户帐户页面“我的视频”链接中,您是否

  1. 只需创建一个users/my_videos 操作和 View 。
  2. 创建videos/my_videos 操作和 View 。
  3. 或者您很可能已经拥有一个包含搜索功能的 videos/index Controller /操作。只需使用此传递用户 ID。

非常感谢任何想法/建议

谢谢

狮子座

最佳答案

一个可能的选择是执行以下操作:

由于视频周围的代码可能比简单的哪个用户拥有哪些视频查找要多得多,因此视频列表操作应该在 VideosController 中。

在过去的项目中(在 CakePHP 1.3 中)我使用前缀路由来解决其中的一些问题。

在 config/core.php 中,确保启用 routing.prefixes 以包含“用户”前缀。

<?php
... in routes.php ...
Routing.prefixes = array( 'user' );
?>

在视频 Controller 中使用以下签名执行操作:

<?php
...
public function user_index( $userID = null ){
...
}
?>

在您链接到用户视频列表的 View 中,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 的 session 帮助程序代码可能需要调整。

这让您 a) 除了启用前缀路由之外不必担心路由问题 b) 将快速让您拥有像这样的漂亮链接 -- site.com/user/videos/index/419

将它与一些 Slug 的爱结合起来(这是我见过的最好的链接 - 数据库层不需要 slug 字段 - http://42pixels.com/blog/slugs-ugly-bugs-pretty-urls)

你甚至可以很容易地得到这样的 url: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

关于model-view-controller - MVC 将 Action 放在最合适的正确 Controller 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com