我一直想知道最好的办法是什么。我有一个SubmissionsController,在其中有一个view()方法,它是每个提交的显示。所有提交都有收藏夹,用户可以对这些收藏进行投票。我想根据用户之前是否对某些内容进行投票来更改图标。我想过这样做:
// checkExistingFavorite would be a boolean method which returns true if the user has already favorited it
<?= if (SubmissionsController::checkExistingFavorite($userId, $submissionId)) { ?>
<span style="favorited">Remove Favorite</span>
<? } else { ?>
<span style="not-favorited">Favorite</span>
<? } ?>
但显然,我不应该直接从我的视图中调用SubmissionsController。我的问题是处理这个问题的最佳方法是什么?每次用户查看提交时都需要进行检查,所以我不确定是否应该缓存此内容?
答案 0 :(得分:1)
您可以在控制器中检查这种情况
基于此设置一个标志0 OR 1,如果多个数据则生成标志状态的数组
传递此数组以查看
基于传递的数组OR值,您可以设置此条件
所以我们可以实现业务逻辑和表示逻辑不同
答案 1 :(得分:1)
这应该在相关的控制器方法中完成,否则你将违反支持Cake的MVC原则。您可以在checkExistingFavorite($userId, $submissionId)
模型中创建Submission
函数,以便所有控制器操作都可以使用它。
使用view()
SubmissionsController
方法(通过调用$this->Submission->checkExistingFavorite()
)检查现有收藏夹后,您可以将视图的变量设置为true
或{ {1}}(false
)。