php – Magento自定义模块,致命错误:调用成员函数setFormAction()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Magento自定义模块,致命错误:调用成员函数setFormAction(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2286字,纯文字阅读大概需要4分钟。
内容图文
![php – Magento自定义模块,致命错误:调用成员函数setFormAction()](/upload/InfoBanner/zyjiaocheng/696/7457d64bcfdf46fc9615c4463f191d57.jpg)
当我在这个网址http://localhost/xxx/index.php/TradeEnquiry上点击我的模块时,我收到此错误
Fatal error: Call to a member function
setFormAction() on a non-object in
C:\wamp\www\stockdisplays\app\code\local\Stock\Tradeenquiry\controllers\IndexController.php
on line 55
第55行是这样的:
$this->getLayout()->getBlock('tradeenquiryView')
->setFormAction( Mage::getUrl('*/*/post') );
这是我的布局xml中的一个片段:
<default>
<reference name="footer_links">
<action method="addLink" translate="label title" module="tradeenquiry">
<label>Trade Enquiry</label>
<url>tradeenquiry</url>
<title>Trade Enquiry</title>
<prepare>true</prepare>
</action>
</reference>
</default>
<tradeenquiry_index_index>
<reference name="root">
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
<action method="setHeaderTitle" translate="title" module="tradeenquiry"><title>Trade Enquiry</title></action>
</reference>
<reference name="content">
<block type="core/template" name="tradeenquiryView" template="tradeenquiry/view.phtml"/>
</reference>
</tradeenquiry_index_index>
我不知道问题是什么?该块正确命名为“tradeenquiryView”.我唯一能想到的是布局xml以某种方式缓存?因为我必须点击/ TradeEnquiry上的模块而不是像我在布局xml中所说的那样/ tradeenquiry,所以它几乎就像它使用旧版本一样?
解决方法:
像Magento一样,有很多原因可能会发生.
首先,在命名块时我会避免使用大写字母“V”.虽然我不认为这会导致问题(因为名称是对URI(核心/文本列表等)和模板文件路径(/path/to/template.phtml)的引用),但是在事实上这是一个事实上的命名约定.某个地方(即Varien)可能决定的小写/下划线名称的布局系统是强制约定.
第二,你有没有打过电话
$this->loadLayout();
在您尝试设置表单操作的行之前的控制器操作中?在您执行此操作之前,您的Layout对象将不会实例化和/或具有对块对象的引用,这意味着
$this->getLayout()->getBlock('...')
总是会返回false.
其他调试技巧.请尝试以下操作以确保您获得了您认为应该的课程.
die(get_class($this->getLayout()->getBlock('root')));
die(get_class($this->getLayout()));
最后,如果全部失败,请转到布局对象的源
app/code/core/Mage/Core/Model/Layout.php
并看一下getBlock方法
public function getBlock($name)
{
if (isset($this->_blocks[$name])) {
return $this->_blocks[$name];
} else {
return false;
}
}
并开始抛出调试语句,看看你是否可以找出系统没有返回对块的引用的原因.不要忘记删除/不签入调试语句,因为这是核心系统代码.
内容总结
以上是互联网集市为您收集整理的php – Magento自定义模块,致命错误:调用成员函数setFormAction()全部内容,希望文章能够帮你解决php – Magento自定义模块,致命错误:调用成员函数setFormAction()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。