【发布时间】:2014-10-28 09:52:52
【问题描述】:
如果来自不同控制器的视图使用相同的元素,需要不同的控制器将相同的数据(因此可能进行相同的处理)传递给视图,那么对单个控制器进行 AJAX 调用不是更好吗?
假设我们有这个:
- 模型/Post.php
- 型号/User.php
- 模型/Service.php
- 控制器/UsersController.php
- 控制器/ServicesController.php
- 视图/用户/view.ctp
- 视图/服务/view.ctp
- 视图/元素/list_users_post.ctp
一个用户属于一个服务,一个用户有很多帖子。
在Views/Services/view.ctp 中,我想显示特定服务的每个用户的列表,并为每个用户显示一些相关信息和他最后 10 个帖子的列表。
在Views/Users/view.ctp,我想显示用户的相关信息和他的 10 个最后帖子的列表。
元素Views/Elements/list_users_post.ctp 允许我考虑显示用户帖子表格的代码。它需要设置 var $userPostList,并且其结构与 $this->Post->find('all', array('conditions' => array('user_id' => $userId))) 的结果相同。
所以在我的UsersController::view($userId) 和ServicesController::view($serviceId) 操作中,我最终得到了一些重复的代码来检索用户的帖子。
我想重构代码,以便操作 ServicesController::view($serviceId) 不会在 Post 模型上找到任何内容,而是视图 Services/index.ctp 为每个用户对操作 UsersController::view($userId) 进行 AJAX 调用。这样,不再有重复的代码,但会产生 AJAX 调用的开销。
有什么想法吗?
【问题讨论】:
标签: ajax cakephp view controller element