Magento Custom Block показывает фатальную ошибку: вызовите функцию элемента SetulmentAte () на необъекте

magento.stackexchange https://magento.stackexchange.com/questions/10716

Вопрос

Я создал один блок в своем пользовательском модуле, но он не работает. Мой модуль работает нормально, но мой блок не работает, когда я называю свой блок из файла cool.phtml, он показывает «фатальную ошибку: вызовите на функцию члена Centustrate () на необъектив». На самом деле я хочу показать какое -то сообщение на моем фронте, используя свой пользовательский блок. Я упомянул свой код ниже

local/monojit/custom/controllers/indexcontroller.php

<?php
class Monojit_Custom_IndexController extends Mage_Core_Controller_Front_Action
{
   public function indexAction()
    {   

        $this->loadLayout();    

        $block = $this->getLayout()->createBlock(
            'Mage_Core_Block_Template',
            'my_block_name_here',
            array('template' => 'custom/test.phtml')
        );

        $this->getLayout()->getBlock('content')->append($block);
        $this->renderLayout();
    }

}
?>

Local/monojit/custom/block/mycustomblock.php

<?php
class Monojit_Custom_Block_Mycustomblock extends Mage_Core_Block_Template

{
//public function _prepareLayout()
//    {
//      return parent::_prepareLayout();
//    }

    public function _construct() {     
        parent::_construct(); 
        $this->setTemplate('custom/test.phtml');     
    }
    public function getmessage()
     {
       $msg = "showing my custom block";       
       return $msg;
     }   
} 
?>

Local/monojit/custom/etc/config.xml

<?xml version="1.0"?>

<config>

<global>

<modules>

<monojit_custom>

<version>0.1.0</version>

</monojit_custom>

</modules>

<blocks>

<custom>

<rewrite>

<custom>Monojit_Custom_Block_Mycustomblock</custom>

</rewrite>

</custom>

</blocks>
<helpers>
  <custom>
      <class>Monojit_Custom_Helper</class>
  </custom>
</helpers>
</global>

<frontend>

<routers>

<custom>

<use>standard</use>

<args>

<module>Monojit_Custom</module>

<frontName>custom</frontName>

</args>

</custom>

</routers>

<layout>

<updates>

<custom>

<file>custom.xml</file>

</custom>

</updates>

</layout>

</frontend>

</config>

Я создал одну тему (скопированная современная тема) внутри Frontend/Default/Monojit изменила конфигурацию дизайна администратора, а также создала необходимую папку, а также внутри Skin.creenshot Pic enter image description here

Design/frontend/default/monojit/template/custom/test.phtml

//want to fetch data from my block 
<p>This is your custom block called programatically.</p>

Localhost/Magento/Index.php/Пользовательская страница показывает мое сообщение правильно, но когда я называю свой блок от toom.phtml Page

<?php echo $this->getLayout()->createBlock('custom/mycustomblock')->setTemplate('custom/test.phtml')->toHtml(); ?>

Он показывает «фатальную ошибку: вызовите на функцию члена Centustrate () на unpject». Мне нужно ли создать любой файл mayout.xml? Пожалуйста, помогите мне, как я могу решить свою проблему. Спасибо

Это было полезно?

Решение

Поместите следующий код под <blocks> Узел в вашем config.xml и попробуйте.

<global>
    <blocks>
        <custom>
             <class>Monojit_Custom_Block</class>
        </custom>
. . . . 
</global>

Другие советы

getLayout () не является методом кода блока нижнего колонтитула, поэтому он является ложным, а не объектом.

Создание детского блока таким образом не является хорошей практикой. Вы должны добавить определение блока в свои макеты.

В вашем случае вы добавите это в свой файл Local.xml Mayout:

<reference name="footer">
   <block type="custom/mycustomblock" name="custom.block" as="custom_block" template="custom/test.phtml"/>
</reference>

затем в вашем нижнем файле. Phtml вы можете использовать $this->getChildHtml('custom_block');

Если по какой -то причине вы хотите продолжить с размещением кода в шаблоне, отрегулируйте свою строку до этого:

<?php echo Mage::getSingleton('core/layout')->createBlock('custom/mycustomblock')->setTemplate('custom/test.phtml')->toHtml(); ?>
<?php
class My_Booking_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        $this->loadLayout();
        $this->renderLayout();            
        echo $this->getLayout()->createBlock('core/template')->setTemplate('booking/booking.phtml')->toHtml();

    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top