【发布时间】:2015-08-19 21:54:24
【问题描述】:
我使用以下代码将我的联系表单.phtml 添加到 cms 页面:
{{block type="core/template" name="contactForm" form_action="/contacts/index/post" template="contacts/form.phtml"}}
但是,当我提交联系表单时,它会显示 404 错误,因为 URL 被路由到 www.domain.de/contacts/index/post,由于我使用带有商店代码的 URL 重写(de /zh)。
所以路由应该去 www.domain.de/de/contacts/index/post
这仅在我如下更改代码时才有效:
{{block type="core/template" name="contactForm" form_action="http://domain.de/de/contacts/index/post" template="contacts/form.phtml"}}
由于我对 magento 很陌生,我没有找到解决方案,我不知道这是否可能是 .htaccess 文件的问题。
有没有人遇到过同样的问题并知道如何解决?
更新:
只是为了确保我做的是否正确:
我创建了\app\code\local\MARG\ContactForm\etc\config.xml\,内容如下:
<config>
<modules>
<MARG_ContactForm>
<version>0.0.1</version>
</MARG_ContactForm>
</modules>
<global>
<blocks>
<ContactForm>
<class>MARG_ContactForm_Block</class>
</ContactForm>
<blocks>
</global>
</config>
然后我用内容创建了app\code\local\MARG\ContactForm\Block\ContactForm.php:
class MARG_ContactForm_Block_ContactForm extends Mage_Core_Block_Template
{
protected function_construct()
{
$this ->setTemplate('contacts/form.phtml');
parent::_construct();
}
public function getFormAction()
{
return Mage::getUrl('*/*/post', array('_secure' => $this->getRequest()->isSecure()));
}
}
在app\etc\modules\MARG_ContactForm.xml我放内容:
<config>
<modules>
<MARG_ContactForm>
<active>true</active>
<codePool>local</codePool>
</MARG_ContactForm>
</modules>
</config>
在 CMS 页面中我添加了{{block type="MARG/ContactForm" name="contactForm"}}
有什么我忽略的吗?
编辑:
我已经完全按照描述完成了,并将{{block type="ContactForm/ContactForm" name="contactForm"}} 添加到 CMS 页面。但是它仍然显示一个空白页 exception.log 说
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_ContactForm_Block_ContactForm' in C:\dev\plain\magento\app\Mage.php:595 Stack trace:
#0 C:\dev\plain\magento\app\code\core\Mage\Core\Model\Layout.php(495): Mage::throwException('Invalid block t...')
#1 C:\dev\plain\magento\app\code\core\Mage\Core\Model\Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('ContactForm/Con...', Array)
【问题讨论】:
-
异常表明 Magento 没有将“ContactForm”解析为类名。在“系统 > 缓存管理”中禁用缓存。如果这样做没有帮助,请尝试将
<ContactForm>标记更改为小写,并将 CMS 页面中的块类型更改为等效的。玩弄它来感受一下。 -
两种方法都试过了,都不管用。你有没有让这个在你当地的magento系统中工作?我想知道我是否真的必须放弃这个
-
我尝试复制粘贴您目前拥有的内容并需要修复这些问题;在 config.xml 中,结束块标记应该是
</blocks>。在 ContactForm.php 中,“function”后面需要有一个空格。两个错字都没有导致您看到的错误消息。 -
这些更改是否导致在 cms 页面中显示表单?因为在我的它仍然不会显示它
-
确实如此。我只能建议您仔细检查您的打字,以防万一您犯了初学者的错误。
标签: magento magento-1.9