Accesso ai metodi da un altro controller CakePHP o alternativa migliore!
-
05-07-2019 - |
Domanda
Sto creando un sistema di "riconoscimento" per il mio sito Web per incoraggiare la gestione di una community, in modo molto simile allo stack overflow che utilizza i badge.
Il sito è costruito in CakePHP, ho creato un modello di premio, controller ecc. attualmente i metodi per calcolare se un utente ha un premio sono contenuti nel controller di premio.
Tuttavia, non riesco a decidere il modo migliore per aggiornare i premi: ad esempio, fai un certo numero di commenti e ricevi un premio per questo, CRON non sarebbe sufficiente altrimenti l'utente potrebbe visitare il proprio profilo aspettandosi un premio e non averne uno fino a quando non viene eseguito il CRON.
Stavo pensando di utilizzare requestAction () per chiamare il metodo per aggiornare i premi nel controller del premio, ma questo non si adatta al modello di progettazione MVC e ho pensato che ci dovesse essere un modo migliore!
Soluzione
Se l'unico modo per ottenere un premio è attraverso la creazione di un commento, ignorerei Model :: save per determinare se è stato aggiunto un nuovo commento. In tal caso, chiamare il modello dei premi per aggiornare il premio.
Se ci sono più azioni che possono assegnare premi, puoi attingere a ciascun modello per eseguire questo controllo o modificare AppModel in modo che ogni salvataggio comporti una chiamata a checkNewAwards () ...
O forse non capisco la domanda?
Altri suggerimenti
crea una funzione nell'helper e inseriscila nel tuo layout in modo che venga eseguita ogni volta che viene eseguito il rendering del layout.