2013-02-27 37 views
0

我想在用戶登錄時檢查他/她是否在數據庫中完成了所有字段(用戶字段)。檢查每個請求的數據庫字段Symfony2

我可以檢查他們在何時登錄這些字段,然後重定向到配置文件視圖,但一旦他們在配置文件視圖中,他們仍然可以看到菜單,所以他們可以輕鬆地轉到其他選項,並且因爲他們已經登錄了我以這種方式無法再檢查它。

所以我雖然也許使用控制器事件監聽器我可以檢查,所以我檢查是控制器是不同的accountController(它有編輯配置文件的視圖),如果不同我可以檢查字段。

該方法的問題是在accountController和其他控制器中,它們是分枝{%render ....%},它再次觸發控制器事件,並給我無窮的呼叫。

什麼方法會更好?謝謝

回答

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 ... %}

+0

感謝結束了,你的想法幫助我,並與一些額外的代碼工作 – 2013-03-05 23:04:45