別のCakePHPコントローラーからのメソッドへのアクセス、またはより良い代替手段!
-
05-07-2019 - |
質問
スタックオーバーフローがバッジを使用するのとほぼ同じ方法で、コミュニティの盗用を促進するために、私のウェブサイト用の「賞」システムを作成しています。
サイトはCakePHPで構築され、アワードモデル、コントローラーなどを作成しました-現在、ユーザーがアワードを持っているかどうかを計算する方法はアワードコントローラーに含まれています。
ただし、賞を更新する最良の方法を決定することはできません-たとえば、一定数のコメントを入力して賞を受賞すると、CRONでは十分ではなく、そうしないとユーザーが期待するプロファイルにアクセスする可能性がありますCRONが実行されるまでアワードはありません。
requestAction()を使用してメソッドを呼び出してアワードコントローラーのアワードを更新することを考えていましたが、これは実際にはMVCデザインパターンに適合せず、より良い方法が必要だと考えました!
解決
賞を獲得する唯一の方法がコメントを作成することである場合、Model :: saveをオーバーライドして、追加される新しいコメントかどうかを判断します。そうである場合、アワードモデルを呼び出してアワードを更新します。
賞を与えることができるアクションが複数ある場合は、各モデルをタップしてこのチェックを実行するか、AppModelを変更して、すべての保存がcheckNewAwards()...の呼び出しになるようにすることができます。
または質問を理解していない可能性がありますか?
他のヒント
ヘルパーで関数を作成し、レイアウトに配置して、レイアウトがレンダリングされるたびに実行されるようにします。
所属していません StackOverflow