2014-02-05 3 views
0

프레임 워크 ZF2를 사용하고 SF2에서 번들처럼 매우 독립적 인 모듈을 만들려고합니다.동일한 이름을 가진 ZF2 충돌 레이아웃

ZfcTwig에 내보기를 렌더링하기 위해 Twig가 있습니다. 이것은 두 번째 모듈을 만들 때까지 작동했습니다.

-Application (default module) 
-Admin 
    -view 
    index.twig 
    -layout 
    base.twig 
-Blog 
    -view 
    index.twig 
    -layout 
    base.twig 

문제는 내 Blog 레이아웃이 관리자 기본 레이아웃을 확장한다는 것입니다. 내가 두 번을 정의했습니다 이유

public function init($moduleManager) 
{ 
    $sharedEvents = $moduleManager->getEventManager()->getSharedManager(); 
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) { 
     $controller = $e->getTarget(); 
     $controller->layout('layout/base.twig'); 
    }, 100); 
} 

플러스 이해가 안 :

는 나는이 한 내 구조 레이아웃이 모두 Module.php에 따라서 http://blog.evan.pro/module-specific-layouts-in-zend-framework-2

에 따라 수행 한 레이아웃, Module.php의 init 함수에서 한 번, 나뭇 가지보기의 확장 기능에서 두 번째.

다른 이름을 사용하고 있는지 확인하십시오.

그리고 나는이 모듈을 보았습니다 : https://github.com/EvanDotPro/EdpModuleLayouts 하지만 이것이 프레임 워크의 철학부터 실제로 독립적 인 모듈을 가질 수 있어야한다고 생각합니다.

답변

0

기본적으로 ZfcTwig는 "zf way"에서 2 단계보기 패턴을 사용하여 작동합니다. 원본 나뭇 가지 시스템 (확장 용)을 사용하려면 구성 파일에 지정해야합니다.

그것은 잘 주석 :

/** 
* If set to true disables ZF's notion of parent/child layouts in favor of 
* Twig's inheritance model. 
*/ 
     'disable_zf_model' => true, 

이 방법을 사용하면 extends 지침 통 더 레이아웃을 제어합니다.

+0

기본적으로 나는 이미이 라인을 보았습니다. 그래서 나는 Twig으로 직접 컨트롤을 할 수없는 이유를 모르겠습니다. –

+0

"나뭇 가지를 사용하지 않고 있습니다."하지만이 경우에 당신의 경우 Module.php에서 레이아웃을 변경하는 것은 쓸모가 없습니다. 나뭇 가지의 "확장"명령은 사용할 명령입니다. 나는 이것이 view_manager 설정의 template_map과 관련이 있다고 생각한다. 이름이 같으면 병합 된 구성에서 찾은 마지막 파일로 해석됩니다. – jmleroux

관련 문제