1

我正在尝试在 Magento 中构建自己的请求目录表单,主要基于开箱即用的联系人模块。我已经设置了我的 XML 文件:

  1. ./app/etc/modules/RequestCatalog_RequestCatalog.xml
  2. ./design/frontend/default/{theme}/layout/requestcatalog.xml
  3. ./code/local/{namespace}/{module}/etc/config.xml

在我的 config.xml 中,我将我的 frontname 设置为“requestcatalog”并告诉它使用我的模块的控制器。但是,当我访问http://app.com/requestcatalog我收到错误:

致命错误:在第 55 行的 /path/to/root/public_html/app/code/local/RequestCatalog/RequestCatalog/controllers/IndexController.php 中的非对象上调用成员函数 setFormAction()

IndexController.php 的第 55 行如下所示:

$this->getLayout()->getBlock('requestcatalog')->setFormAction( Mage::getUrl('*/*/post') );

我在布局 XML 中定义了名为“requestcatalog”的块。

我搜索了 SO 并找到了一个有同样问题的用户,但是没有提供解决方案:Magento 自定义模块,致命错误:调用成员函数 setFormAction()

我的 requestcatalog.xml:

<layout version="0.1.0">
<default>
    <reference name="footer_links">
        <action method="addLink" translate="label title" module="requestcatalog" ifconfig="requestcatalog/requestcatalog/enabled"><label>Request a Catalog</label><url>requestcatalog</url><title>Request a Catalog</title><prepare>true</prepare></action>
    </reference>
</default>

<requestcatalog_index_index>
    <reference name="root">
        <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
        <action method="setHeaderTitle" translate="title" module="requestcatalog"><title>Request a Catalog</title></action>
    </reference>
    <reference name="content">
        <block type="core/template" name="requestcatalog" template="requestcatalog/form.phtml"/>
    </reference>
</requestcatalog_index_index>

我的索引操作():

   public function indexAction()
{
    $this->loadLayout();

    $this->getLayout()->getBlock('requestcatalog')
        ->setFormAction( Mage::getUrl('*/*/post') );

    $this->_initLayoutMessages('customer/session');
    $this->_initLayoutMessages('catalog/session');
    $this->renderLayout();
}
4

0 回答 0