2013-02-27 2 views
0

사용자가 데이터베이스에있는 모든 필드 (사용자 필드)를 완료했는지 확인하는 경우 수행 할 작업.각 요청에 대해 데이터베이스 필드를 확인하십시오. Symfony2

해당 필드에 로그온 한 다음 프로필보기로 리디렉션 할 때 확인할 수 있지만 일단 프로필보기에 있으면 여전히 메뉴를 볼 수 있으므로 쉽게 다른 옵션으로 이동할 수 있으며 이미 로그인 중이므로 이 방법으로 더 이상 확인할 수 없습니다.

컨트롤러 리스너를 사용하여 확인할 수 있습니다. 컨트롤러가 accountController (프로파일 편집보기가있는)와 다르며 필드가 다를 수 있는지 확인합니다.

이 접근법의 문제점은 accountController에 있으며 다른 컨트롤러에서는 twig {% 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

덕분에 모든 호출에 해고와 끝까지하지 않습니다 이런 식으로 ... 요청이 마스터 요청인지 여부를 확인해야합니다 아이디어가 나를 돕고 몇 가지 추가 코드로 작동합니다. –

관련 문제