2010-07-23 14 views
8

提交後,我如何可以重定向到一個特定頁面的用戶提交的聯繫方式在Magento後? form.phtml有重定向到一個特定的頁面接觸形式在Magento

<form action="<?php echo Mage::getUrl(); ?>contacts/index/post/" id="contactForm" method="post"> 

但我不知道在哪裏可以找到控制電子郵件發送和重定向的php文件。有任何想法嗎?感謝

編輯:發現這在IndexController.php下應用>代碼>核心>法師>通訊錄>控制器

$this->_redirect('*/*/'); 

回答

2

IndexController.php下應用>代碼>核心>法師>通訊錄>控制器

改變

$this->_redirect('*/*/'); 

$this->_redirect(''); 

,現在重新定向到主頁。

+11

對於那些你正在查看這個,請不要更改核心!不要編輯這個文件。 – sanbornm 2014-04-28 16:18:19

+5

不好的做法。不要更改核心文件。 – 2014-08-29 11:49:53

+0

那麼你建議我們做什麼?我正在將CMS頁面中的聯繫我們用作塊。 – 2015-09-22 07:26:01

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

+0

感謝分享 – pixeltocode 2011-04-28 13:09:15

+0

「我也是!謝謝!」 – 2011-12-02 10:42:40

+1

@noobcode你在哪裏放行'$ this - > _ redirect('contactus');'?謝謝。 – shnozolla 2013-01-16 17:20:44

3

也可以創建自定義url重定向。

ID路徑 - 觸點/索引 請求路徑 - 觸點/索引 目標路徑 - 「重定向URL」

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'),讓您得到重定向到前一頁,如果沒有參考設置,爲/聯繫人/指數作爲後備。

我也改變了形式。從

<div id="messages_product_view"> 
    <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?> 
</div> 

PHTML到

<div id="messages_product_view"> 
    <?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?> 
    <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?> 
</div> 

來顯示錯誤消息。

-1

將合併的溶液在從@Simon兩個答案,其他

  • 變化$this->_redirect('*/*/')到處在app/code/core/Mage/Contacts/controllers/IndexController.php$this->_redirectReferer();
  • 和更新的形式給定的PHTML通過編輯app/design/frontend/base/default/template/contacts/form.phtml爲包括錯誤/成功消息和在消息中添加行<?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?>_product_view

最好將文件複製到'本地'

+0

將文件複製到'local'比直接在'core'中編輯要好,但仍然不是最好的做法,即在自定義模塊中重寫控制器文件,然後在其中進行更改。這樣,在升級時,只需將'postAction'與升級版本進行比較,而不是整個Controller文件。 – pcronin 2016-10-22 22:35:59

4

下一個人

  1. 去絲綢軟件和使用他們的模塊創造者 http://www.silksoftware.com/magento-module-creator/
  2. 輸入您的公司名稱和模塊名稱創建一個新的模塊
  3. 然後改變「需要重寫Magento的階層」是
  4. 單擊「添加類」,類名稱將爲Mage_Contacts_IndexController
  5. 這將創建一個模塊,其中包含您需要的所有內容
  6. 從核心控制器添加postAction方法到新創建的控制器
  7. 然後在postAction方法結束

模塊創作者將創造一切改變重定向到redirectReferer(),你需要重載聯繫人控制器,爲您節省排版錯誤的時間。另外,請直接編輯核心文件,避免麻煩。

請勿編輯核心文件!