2010-03-05 2 views
3

현재 Magento 확장 프로그램에서 작업하고 있으며 정상적으로 작동하는 코어 컨트롤러를 재정의했습니다.Magento 모듈 - 템플릿을 추가하고 컨트롤러를 재정의합니다.

이제 컨트롤러에 새 작업을 추가했습니다. 문제는 내가 작업을 호출 할 때마다 빈 페이지가 생성된다는 것입니다. 뭔가를 울리면 제대로 표시됩니다.

따라서 고객 모듈과 컨트롤러의 핵심 부분을 파헤 쳤습니다.

<?php 
public function indexAction() 
{ 
    $this->loadLayout(); 
    $this->_initLayoutMessages('customer/session'); 
    $this->_initLayoutMessages('catalog/session'); 

    $this->getLayout()->getBlock('content')->append(
     $this->getLayout()->createBlock('customer/account_dashboard') 
); 
    $this->getLayout()->getBlock('head')->setTitle($this->__('My Account')); 
    $this->renderLayout(); 
} 

내가 내 자신의 행동이 이전과 레이아웃이 제대로 렌더링 : 나는 indexAction() 같은 방법 레이아웃이 방법을 구현하는 것이이 보았다. 이제 질문 :

->createBlock('...') 호출을 입력해도 내용 영역에 아무것도 렌더링되지 않습니다.

레이아웃으로 장식하면서 내 페이지의 내용으로 렌더링 할 내 블록의 위치를 ​​어떻게 지정합니까?

/design/frontend/base/default/layout/myaddon.xml의 xml 파일을 열심히 보았지만 제대로 작동하지 못했습니다.

답변

6

단일 StackOverflow 포스트에서 Magento 레이아웃 시스템 전체를 다루는 것은 약간이지만, 다음을 통해 원하는 것을 얻을 수 있어야합니다.

$block = $this->getLayout()->createBlock('Mage_Core_Block_Text'); 
    $block->setText('<h1>This is a Test</h1>'); 
    $this->getLayout()->getBlock('content')->append($block); 

위에서 시작하여 필요한 것을 구축 할 수 있어야합니다. 아이디어는 자신 만의 블록을 만들고 레이아웃의 기존 블록에 추가하는 것입니다. 이상적으로는 자신 만의 블록 클래스을 만들어 (Mage_Core_Block_Text 대신) 인스턴스화하고 내부 템플릿 메커니즘을 사용하여 phtml 파일로로드 (코드 생성에서 HTML 생성 분리)하는 것입니다.

레이아웃 시스템의 작동 방식에 대해 배우고 싶다면 an article으로 시작하는 것보다 훨씬 더 나빠질 수 있습니다.

관련 문제