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 回答