Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对非对象Magento调用成员函数insert()_Magento - Fatal编程技术网

对非对象Magento调用成员函数insert()

对非对象Magento调用成员函数insert(),magento,Magento,我正在自定义模块的Config.xml中使用Observer事件 <controller_action_layout_render_before> <observers> <Test_Check_Model_Observer> <class>Test_Check_Helper_Data</class>

我正在自定义模块的Config.xml中使用Observer事件

<controller_action_layout_render_before>
                <observers>
                    <Test_Check_Model_Observer>
                        <class>Test_Check_Helper_Data</class>
                        <method>checkValidi</method>
                    </Test_Check_Model_Observer>
                </observers> </controller_action_layout_render_before>

但在前端,当我填写结帐账单和其他信息时,它会给我一个错误调用,在结帐进度右侧栏的非对象上插入一个成员函数,请给我任何解决方案,谢谢

如果您查看checkout模块checkout.xml的布局,您可以看到一些句柄没有内容块。例如,结帐\一页\进度\账单或结帐\一页\进度\发货

因此,您的代码将出现非对象错误。我认为在调用方法之前应该检查$block变量

      $layout = Mage::app()->getLayout();
      $content = $layout->getBlock('content');

      if ($content) {
          $block = 'hello! I am Working';
          $content->insert($block);
      } 

从观察者处调用帮助者不是一个好主意

观察者总是调用一个模型文件,它没有类

我已经修改了代码config.xml,代码是

<global>
    <models>
        <testcheck>
            <class>Test_Check_Model</class>
        </testcheck>
    </models>
</global>
 <events>

        <controller_action_layout_render_before>
            <observers>
                <test_check_codel_observer>
                    <type>singleton</type>
                    <class>testcheck/observer</class>
                    <method>your_function_name</method>
                </test_check_codel_observer>
            </observers>
        </controller_action_layout_render_before>
    </events>
然后在app/code/YourcodePoll/Test/Check/Model下创建Observer.php文件/

及以下 php中的代码

<global>
    <models>
        <testcheck>
            <class>Test_Check_Model</class>
        </testcheck>
    </models>
</global>
 <events>

        <controller_action_layout_render_before>
            <observers>
                <test_check_codel_observer>
                    <type>singleton</type>
                    <class>testcheck/observer</class>
                    <method>your_function_name</method>
                </test_check_codel_observer>
            </observers>
        </controller_action_layout_render_before>
    </events>
<?php class Test_Check_Model_Observer
{
public function  your_function_name($observer){

  $block = $this->getLayout()
        ->createBlock('core/text', 'example-block')
        ->setText('<h1>This is a text block</h1>');
    $observer->getEvent()->getLayout()->getBlock('content')->append($block);
 //$observer->getEvent()->getLayout()->getUpdate();


}
}