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