Доступ к методам с другого контроллера CakePHP или лучшей альтернативы!

StackOverflow https://stackoverflow.com/questions/1600796

Вопрос

Я создаю систему поощрений для своего веб-сайта, чтобы поощрять участников сообщества, почти так же, как при переполнении стека используются значки.

Сайт построен в CakePHP, я создал модель Award, контроллер и т. д. - в настоящее время в контроллере Award содержатся методы для расчета наличия у пользователя награды.

Однако я не могу определиться с наилучшим способом обновления наград - например, вы делаете определенное количество комментариев и получаете за это вознаграждение, CRON будет недостаточно, иначе пользователь может посетить свой профиль, ожидая Награда и не иметь, пока CRON не будет запущен.

Я думал об использовании requestAction () для вызова метода для обновления наград в контроллере наград, однако это не совсем соответствует шаблону проектирования MVC, и я подумал, что должен быть лучший способ!

Это было полезно?

Решение

Если единственный способ получить награду - это сделать комментарий, я бы просто переопределил Model :: save, чтобы определить, будет ли добавлен новый комментарий. Если это так, позвоните в модель наград, чтобы обновить премию.

Если существует несколько действий, которые могут давать награды, вы можете либо нажать на каждую модель, чтобы выполнить эту проверку, либо изменить AppModel, чтобы при каждом сохранении вызывался вызов checkNewAwards () ...

Или, может быть, я не понимаю вопроса?

Другие советы

создайте функцию в помощнике и поместите ее в свой макет, чтобы он выполнялся каждый раз, когда макет отображается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top