2013-02-27 48 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