0

ユーザーがデータベース内のすべてのフィールド (ユーザー フィールド) を完全に持っているかどうかをチェックするときに、何をしたいですか。

それらのフィールドをログに記録してからプロファイル ビューにリダイレクトするタイミングを確認できますが、プロファイル ビューに入るとメニューが表示されるので、他のオプションに簡単に移動できます。すでにログを記録しているため、もう確認できません。この上。

コントローラーイベントリスナーを使用して確認できるので、コントローラーがaccountController(プロファイルを編集するビューがある)と異なることを確認し、異なる場合はフィールドを確認できます。

そのアプローチの問題はaccountControllerにあり、他のコントローラーでは小枝{%render ....%}であり、コントローラーイベントを再度発生させ、無限の呼び出しを与えます。

どのようなアプローチがよいでしょうか?ありがとう

4

1 に答える 1

2

コントローラー イベント ( kernel.controller) を使用してフィールドをチェックするという考えは正しいです。イベント ハンドラーでは、リクエストがマスター リクエストかどうかを確認するだけです...

use Symfony\Component\HttpKernel\HttpKernel;

class FieldUpdater
{
    /**
     * Updates user's fields
     *
     * @param \Symfony\Component\HttpKernel\Event\FilterControllerEvent $event
     *
     * @return void
     */
     public function onCoreController(FilterControllerEvent $event)
     {
         //if this isn't the main http request, then we aren't interested...
         if (HttpKernel::MASTER_REQUEST !== $event->getRequestType()) {
             return;
         }

         // update fields
      }
 }

こうすれば、呼び出しのたびにこれが起動されることはありません。{% render ... %}

于 2013-02-28T09:04:59.847 に答える