2012-09-20 2 views
0

Symfony2/Doctrine2에서 postPersist/postUpdate/postRemove 이벤트를 사용하고 있습니다. 예를 들면 다음과 같습니다.Doctrine 2 stop 이벤트 전파

public function postPersist(LifecycleEventArgs $args){ 

} 

제 질문은 : 이벤트가 더 이상 전파되지 않게하려면 어떻게합니까?

고마워요

+0

조치를 중지 하시겠습니까? 즉 유지되지 않습니까? –

답변

0

이렇게 할 수없는 것 같습니다. 를 참조하십시오 UnitOfWork :: executeInserts 메서드 및 EventManager :: dispatchEvent 메서드. Ther은 휴식이 아니며 try/catch를 사용하지 않습니다.

정말할까요? 이렇게하면 프로젝트에 해를 끼칠 수 있습니다. 예 : FOSUserBundle은 사용자의 정보를 업데이트하기 위해이 이벤트를 듣고 있습니다. 강제 전파를 중지하면 사용자 로그인 기능이 손상 될 수 있습니다.

+0

나는 네가 옳다고 생각하고 사건 전파를 막을 방법이 없다. 지금 문제는 무한 루프가 있다는 것입니다. 이 문제를 다른 방법으로 수정하려고합니다. – Ben

+0

스위치를 사용하여 두 번째 호출을 잡습니다. ** if ($ this-> called) return; $ this-> called = true; // ... ** 또는 그 이하 : ** if (0 == $ this-> callCounter ++) return; // ... ** –