在Magento中提交联系表单后重定向到特定页面

时间:2010-07-23 02:00:19

标签: magento

用户在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('*/*/');

8 个答案:

答案 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)

为下一个人

  1. 转到丝绸软件并使用其模块创建者创建一个新模块 http://www.silksoftware.com/magento-module-creator/
  2. 输入您的公司名称和模块名称
  3. 然后改变&#34;需要重写Magento Class&#34;是的
  4. 点击&#34;添加课程&#34;类名将为Mage_Contacts_IndexController
  5. 这将创建一个包含您需要的所有内容的模块
  6. 将核心控制器中的postAction方法添加到新创建的控制器
  7. 然后在postAction方法结束时将重定向更改为redirectReferer()
  8. 模块创建者将创建所需的一切,以使联系人控制器过载,并节省您对拼写错误进行排除的时间。另外,请直接在编辑核心文件的过程中省去麻烦。

    不要编辑核心文件!

答案 2 :(得分:3)

也可以创建自定义网址重定向。

  • id path - contacts / index
  • 请求路径 - contacts / index
  • 目标路径 - 'redirect url'

答案 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)

根据我的经验,我想在提交联系人页面后更改成功消息。

  1. 我在静态页面中使用了以下代码

    {{block type='core/template' name='contactForm' form_action='mywebsiteurl/contacts/index/post' template='contacts/form.phtml'}}
    
  2. 我覆盖自定义模块config.xml文件中的默认控制器操作。

            <routers>
                <airhotels>
                    <args>
                        <modules>
                            <apptha_airhotels before="Mage_Contacts">Apptha_Airhotels</apptha_airhotels>
                        </modules>
                    </args>
                </airhotels>
            </routers>
    
  3. 在我的自定义控制器(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); 
    
  4. 此表单网址定义为:         $ formUrl = basename($ this-&gt; _getRefererUrl());

答案 6 :(得分:0)

一种很脏但很简单的方法是在提交表单后将/contact/index重定向到/contact

假设您在模板中扩展Magento联系人,如下所示:

enter image description here

添加具有以下内容的文件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;