用户在Magento中提交联系表单后如何重定向到特定页面? form.phtml有
<form action="<?php echo Mage::getUrl(); ?>contacts/index/post/" id="contactForm" method="post">
但我不知道在哪里可以找到控制电子邮件发送和重定向的php文件。有任何想法吗?感谢
编辑:在app&gt;下的IndexController.php中找到了这个。代码&gt;核心&gt;法师&gt;联系人&gt;控制器
$this->_redirect('*/*/');
答案 0 :(得分:14)
我知道它的回答,只是分享我的经验。 我通过CMS页面制作了联系表格。表格运作良好。但提交后,它将重定向到magento联系表。要将其重定向回CMS页面,我必须添加
$this->_redirect('contactus');
其中contactus
是URL标识符。
同样在重定向之后,不会显示成功/错误消息。为此我必须在这里做出改变。
转到 /app/design/frontend/default/yourstore/template/contacts/form.phtml
<div id="messages_product_view">
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
</div>
使用:
<?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?>
我从here
获得了解决方案答案 1 :(得分:4)
为下一个人
模块创建者将创建所需的一切,以使联系人控制器过载,并节省您对拼写错误进行排除的时间。另外,请直接在编辑核心文件的过程中省去麻烦。
不要编辑核心文件!
答案 2 :(得分:3)
也可以创建自定义网址重定向。
答案 3 :(得分:2)
为避免覆盖核心文件并损害更新兼容性,我按照此处所述重载了控制器:Tutorial: Overload a controller
<frontend>
<routers>
<contacts>
<args>
<modules>
<My_Module_Contacts before="Mage_Contacts">My_Module_Contacts</My_Module_Contacts>
</modules>
</args>
</contacts>
</routers>
</frontend>
并将$this->_redirect('*/*/')
重写为$this->_redirectReferer('contacts/index')
,以便重定向到上一页,如果没有设置referer,则将/ contacts / index作为后备。
我也改变了
中的form.phtml<div id="messages_product_view">
<?php echo $this->getMessagesBlock()->getGroupedHtml(); ?>
</div>
到
<div id="messages_product_view">
<?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?>
<?php echo $this->getMessagesBlock()->getGroupedHtml(); ?>
</div>
显示错误消息。
答案 4 :(得分:1)
app&gt;下的IndexController.php;代码&gt;核心&gt;法师&gt;联系人&gt;控制器
已更改
$this->_redirect('*/*/');
到
$this->_redirect('');
现在它重新定向到主页。
答案 5 :(得分:1)
根据我的经验,我想在提交联系人页面后更改成功消息。
我在静态页面中使用了以下代码
{{block type='core/template' name='contactForm' form_action='mywebsiteurl/contacts/index/post' template='contacts/form.phtml'}}
我覆盖自定义模块config.xml文件中的默认控制器操作。
<routers>
<airhotels>
<args>
<modules>
<apptha_airhotels before="Mage_Contacts">Apptha_Airhotels</apptha_airhotels>
</modules>
</args>
</airhotels>
</routers>
在我的自定义控制器(Apptha_Airhotels_ContactsController)操作(postAction)中,我使用了自定义消息并重定向到自定义网址。
Mage::getSingleton('customer/session')->addSuccess(Mage::helper('contacts')->__('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.'));
$this->_redirect($formUrl);
此表单网址定义为: $ formUrl = basename($ this-&gt; _getRefererUrl());
答案 6 :(得分:0)
一种很脏但很简单的方法是在提交表单后将/contact/index
重定向到/contact
。
假设您在模板中扩展Magento联系人,如下所示:
添加具有以下内容的文件Magento_Contact/templates/form-submitted.phtml
:
<?php
header('Location: /contact');
exit;
然后更改Magento_Contact/layout/contact_index_index.html
以使用该模板,如下所示:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<title>Contact</title>
</head>
<body>
<referenceContainer name="content">
<block class="Magento\Contact\Block\ContactForm" name="contactForm" template="Magento_Contact::form-submitted.phtml">
<container name="form.additional.info" label="Form Additional Info"/>
</block>
</referenceContainer>
</body>
</page>
一切正常,包括即时消息。
Voila!
答案 7 :(得分:-1)
@Simon和其他人的答案中给出了综合解决方案
$this->_redirect('*/*/')
到app/code/core/Mage/Contacts/controllers/IndexController.php
$this->_redirectReferer();
app/design/frontend/base/default/template/contacts/form.phtml
并在messages_product_view中添加行<?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?>
来更新表单phtml以包含错误/成功消息最好将文件复制到本地&#39;