【发布时间】:2012-03-05 09:22:22
【问题描述】:
我一直想知道最好的方法是什么。我有一个 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。我的问题是处理这个问题的最佳方法是什么?每次用户查看提交时都需要检查它,所以我不确定是否应该缓存它?
【问题讨论】:
-
这通常是一个设计错误。你应该把这些方法放在你的模型中,而不是控制器中。
-
如何从我的控制器中引用它们?
var $uses = 'SubmissionsFavorite'然后$this->SubmissionsFavorite->methodFromSubmissionsFavoriteModel();?> -
永远不要使用 :) 使用 ClassRegistry::init() 或 loadModel() 代替。 PS:要回答这个问题,您必须了解更多有关 checkExistingFavorite() 方法的信息。
标签: php cakephp view controller cakephp-2.0