1

私は Symfony でプロジェクト管理ツールを開発しています。現在、ログを記録するモジュールを作成しています。つまり、新しいプロジェクトの作成、タスクの作成、タスクのステータスの変更、プロジェクトとタスクの削除などのすべてのイベントをキャプチャします。

上記のイベントのいずれかが発生するたびに新しい行を挿入する予定のログ テーブルがあります。ただし、これを行うには、各コントローラーに移動し、ログ モデルを呼び出して挿入クエリを実行する必要があります。このコードを追加するために、コントローラー内のすべてのアクションに再び取り組むつもりのようです。Symfony のクラスのようなイベント ディスパッチャーを使用してモデルを 1 回だけ呼び出す他の方法はありますか。

4

2 に答える 2

2

Propelを使用していることをうれしく思います。オブジェクトに何が起こったかを追跡するためのプラグインや動作がたくさんあります。私が見つけたもののリストをあなたにあげます:

  • pmPropelObjectLogBehaviorPlugin:クラス変更ログ(各インスタンスの変更)を維持します。
  • AuditableBehavior:推進オブジェクトのアクティビティをログに記録する機能を追加します
  • propel-listener-behavior:リスナーをアタッチして、生成されたオブジェクトの更新について通知するオブジェクトを推進します。
  • ncPropelChangeLogBehaviorPlugin:Propelオブジェクトに加えられた変更を追跡できるようにするPropelオブジェクトの動作。
于 2012-09-23T14:04:43.497 に答える
0

JMSAOPBundleはまさにそれを行います。

私が提案する場合は、アクションごとにカスタム イベントを追加する方が良いと思います。これにより、制御を失うことなく、より多くのリスナーでアプリを拡張できます。ドクトリンを使用する場合は、ドクトリン イベント システムを使用することもできます

于 2012-09-20T12:46:43.483 に答える