2012-08-13 3 views
6

Zendframework 1에서는 컨트롤러의 내용 초기화를 위해 init() 메소드를 사용합니다. 나는 이것을 zenframework 2에서 꺼내는 것을 보았다. 왜? zf2에서 동일한 것을 달성하는 가장 좋은 방법은 무엇입니까? zf1에서 개발 한 이전 프로젝트를 업그레이드하고 zf1과 비교하여 zf2에서 많은 변화가 있음을 알 수 있습니다.zf2 컨트롤러의 init 메소드

zf2에 다른 변경 사항이 있습니까? zf1에서 preDispatch()postDispatch()과 같은 다른 방법을 사용하고 있습니까?

누구든지이 과정을 밟았습니까?

답변

12

zf2 컨트롤러는 ServiceManager의 하위 클래스 인 ControllerLoader에 의해 인스턴스화됩니다. 컨트롤러를 초기화해야하는 경우 공장 또는 __construct을 사용하십시오. Simpile initalizations에는 __construct을 사용하고, 컨트롤러가 주입해야하는 다른 물체를 사용하는 경우 Factory를 사용하십시오.

preDispatchpostDispatch도 새 이벤트 시스템을 선호합니다. zf2에서 동일한 결과를 얻으려면 disptachrender 이벤트에 대한 이벤트 처리기를 등록하십시오. MVC envents의 전체 목록은 또한 http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

을 볼 나는 당신이 컨트롤러에이 드롭 할 수 있다고 생각하는 컨트롤러 공장 ZF2 how to get entity Manager from outside of controller

+4

akrabats 이벤트의 전체 목록 외에 Matthew W.O'Phinney의 블로그 http://mwop.net/blog/2012-07-30-the-new-init.html – Sam

+0

감사합니다 샘,이 링크는 정말 도움이됩니다. – Developer

8

을 설정하는 예제는 여기를 살펴보고 그것을 작동합니다. 영업 이익은 postDispatch을 언급 이후

public function onDispatch(MvcEvent $e) 
+0

이것은 내가 좋아하는 대답이다. – Ismael

+0

예수님, 왜 모든 것이 ZF2에서 그렇게 복잡한가요? – Jonathan

0

, 그것은 __destruct 지금 유사한 방식으로 작동하는지 주목할 가치가있다. 그러나 한 가지 큰 차이점은 개체 실행을 방해 할 수 없다는 것입니다 (예 : exit; 통해).

관련 문제