我一直在想知道做到這一點的最佳方式是什麼。我有一個SubmissionsController,裏面有一個view()方法,它是每個提交的顯示。所有提交都有收藏夾,用戶可以對這些收藏進行投票。我想根據用戶之前是否投票表決來更改圖標。我想過這樣做:從視圖中調用控制器的方法CakePHP
// 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。我的問題是處理這個問題的最佳方法是什麼?每次用戶查看提交時都需要檢查它,所以我不確定我是否應該緩存該提交?
這是一個通常的設計錯誤。 你應該把這些方法放在你的模型中,而不是控制器。 – mark 2012-03-05 09:31:33
如何從我的控制器中引用它們? var $ uses ='SubmissionsFavorite''然後'$ this-> SubmissionsFavorite-> methodFromSubmissionsFavoriteModel();'?> – 2012-03-05 09:48:10
永遠不會使用:)使用ClassRegistry :: init()或loadModel()來代替。 PS:爲了回答這個問題,人們必須更多地瞭解checkExistingFavorite()方法。 – mark 2012-03-05 13:06:23