从另一个CakePHP控制器或更好的选择访问方法!

从另一个CakePHP控制器或更好的选择访问方法!,php,model-view-controller,cakephp,controller,Php,Model View Controller,Cakephp,Controller,我正在为我的网站创建一个“奖励”系统,以鼓励社区的狂热,就像stack overflow使用徽章一样 该网站是建立在CakePHP,我已经创建了一个奖励模型,控制器等-目前计算用户是否有奖励的方法包含在奖励控制器 但是,我无法决定更新奖励的最佳方式-例如,您发表了一定数量的评论并因此获得奖励,否则CRON将不足以满足用户访问他们的个人资料期望获得奖励,并且在CRON运行之前没有奖励 我在考虑使用requestAction()调用方法来更新奖励控制器中的奖励,但是这并不真正符合MVC设计模式,我认

我正在为我的网站创建一个“奖励”系统,以鼓励社区的狂热,就像stack overflow使用徽章一样

该网站是建立在CakePHP,我已经创建了一个奖励模型,控制器等-目前计算用户是否有奖励的方法包含在奖励控制器

但是,我无法决定更新奖励的最佳方式-例如,您发表了一定数量的评论并因此获得奖励,否则CRON将不足以满足用户访问他们的个人资料期望获得奖励,并且在CRON运行之前没有奖励


我在考虑使用requestAction()调用方法来更新奖励控制器中的奖励,但是这并不真正符合MVC设计模式,我认为一定有更好的方法

如果获得奖励的唯一方法是发表评论,我只需要覆盖Model::save来确定是否添加了新评论。如果是,请调用奖励模型以更新奖励

如果有多个操作可以授予奖励,您可以点击每个模型来执行此检查,或者修改AppModel,以便每次保存都会导致调用checkNewAwards()


或者我不理解这个问题?

在助手中创建一个函数,并将其放在布局中,以便在每次呈现布局时都运行该函数。

实际的模型名称、徽章或声誉与问题无关。你可以想到不同实体的相同情况。好吧,我想给这个问题提供一些背景,因为它可能会改变答案,即在不同的控制者和其他不受用户直接影响的事件中发生的网站周围的各种行为可以获得奖励(例如,接收其他用户的评论)对不起,我指的是关于你标记问题的方式的评论,而不是文本。可以提及所有这些。谢谢,我有大约20个不同的奖项,每个奖项都有一个相关的方法来检查它-你认为我应该将这些从奖项控制器移动到AppModel吗?我想我可能会在那时。随着时间的推移在20个奖励中,让代码集中起来执行检查会更好。折衷的做法是,每次保存时都要检查条件,即使是那些通常不会执行的情况。因此,这将花费您一些执行时间,但我认为这将通过代码可维护性来平衡。减少磨损我可以在每个模型保存中提供一个奖项列表,以便检查奖项,因此在评论模型中,它只会检查与评论有关的奖项等。我认为,结合所有人的建议应该可以做到这一点!我认为这是“最正确的”类型解决方案——很好的平衡。我所做的大部分工作都是在快速原型领域,所以我可能会将其放在AppModel::save()方法中,因为这样速度更快。不过,很高兴您找到了一个适合您需要的解决方案。