Magento modül - şablonlar ekleyerek, bir denetleyici geçersiz

1 Cevap php

Ben şu anda bir Magento uzantısı üzerinde çalışıyorum, ve ben gayet iyi çalışan bir çekirdek denetleyicisi, geçersiz kılınmış.

Şimdi benim denetleyicisi için yeni bir eylem ekledik. Sorun ben eylem çağrısı her bir boş sayfa üretilmiş olmasıdır. Ben bir şey yankı eğer doğru görüntülenir.

Bu nedenle Müşteri modülü ve kontrolörlerin çekirdek içine kazdık. Ben gibi yöntemler indexAction() düzenini bu şekilde uygulamak orada gördüm:

<?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();
}

Ben kendi eylem bu transfer ve düzeni artık doğru işlenir. Şimdi soru için:

Olursa olsun ->createBlock('...') çağrı içine girmek ne, hiçbir şey içerik alanına çevrildi.

Hala düzeni ile dekore ederken nasıl sayfanın içerik olarak işlenecek kendi bloğun yerini belirtebilirim?

I / tasarım / frontend / baz / default / düzeni / myaddon.xml içinde xml dosyaları ile uğraşmaktan denedim ama gerçekten işe gelemedi.

1 Cevap

Tek bir StackOverflow yazı Magento düzen sisteminin bütününü kapsayan bir biraz fazla olduğunu, ancak aşağıdaki ile istediğiniz şeyi elde etmek için gerekir.

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

Yukarıdan başlayarak, size ne gerek oluşturmak gerekir. Fikir kendi blokları oluşturmak ve daha sonra düzeninde mevcut blokları onları append konum olduğunu. İdeal olarak, (yerine Mage_Core_Block_Text daha) örneğini kendi block classes oluşturma ve (kod üretimi HTML nesil ayıran) phtml dosyaları yüklemek için kendi iç şablon mekanizmasını kullanarak ediyoruz.

Eğer düzen sisteminin nasıl çalıştığını internals öğrenme ilgileniyorsanız eğer, an article Ben konuyla ilgili yazdı ile başlamak çok daha kötü yapabilir.