检查每个请求的数据库字段Symfony2

检查每个请求的数据库字段Symfony2,symfony,Symfony,如果用户登录时检查他/她是否已完成数据库中的所有字段(用户字段),我想做什么 我可以检查他们何时登录这些字段,然后重定向到纵断面图,但一旦他们进入纵断面图,他们仍然可以看到菜单,因此他们可以轻松转到其他选项,因为他们已经登录,我无法再以这种方式检查 所以我想也许使用控制器事件监听器我可以检查,所以我检查控制器是否不同于accountController(具有编辑配置文件的视图),如果不同,我可以检查字段 这种方法的问题在于accountController和其他控制器中的细枝{%render…%

如果用户登录时检查他/她是否已完成数据库中的所有字段(用户字段),我想做什么

我可以检查他们何时登录这些字段,然后重定向到纵断面图,但一旦他们进入纵断面图,他们仍然可以看到菜单,因此他们可以轻松转到其他选项,因为他们已经登录,我无法再以这种方式检查

所以我想也许使用控制器事件监听器我可以检查,所以我检查控制器是否不同于accountController(具有编辑配置文件的视图),如果不同,我可以检查字段

这种方法的问题在于accountController和其他控制器中的细枝{%render…%}再次触发控制器事件并给我无限次调用


什么方法更好?感谢您使用控制器事件(
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…%}

谢谢,你的想法帮了我一把,再加上一些额外的代码就行了