0

我有一个模块,它安装了一个带有一些默认 URL 和一些带有表单的文本的 CMS 页面。在这个表格上,我有字段并提交。我使用 ajax 验证我的字段(在我的模块的控制器中发送 POST)。如果验证正常,我会使用“成功消息”重定向到同一页面。

问题是,我在成功提交后进行重定向的这个 CMS 页面的默认 URL 可以在 BO 中更改 - 这就是为什么我不能只$this->_redirect('default_URL')在我的控制器中更改,因为这个 url 可以更改。

我该怎么办?

编辑:解决方案:成功验证后在我的控制器中使用 $this->_redirectReferer()

4

3 回答 3

3

尝试将“返回 URL”作为隐藏字段放入表单,或者您可以使用 $this->_redirectReferer() 重定向回 CMS 页面。

请参阅http://docs.magentocommerce.com/Mage_Core/Mage_Core_Controller_Varien_Action.html#method_redirectReferer

如果您想重定向到某个特定的 CMS 页面(不是放置表单的页面),您可以这样做:

  1. 在系统配置中添加下拉菜单,以便能够选择“成功页面”(比硬编码 cms 页面 ID 好得多)

  2. 在您的控制器中重定向到此页面

代码:

$pageId = Mage::getStoreConfig('mymodule/config/success_page');
$page = Mage::getModel('cms/page')->load($pageId);
$this->_redirect($page->getUrlKey());
于 2013-11-12T19:14:04.867 回答
0

您可以使用 getStoreConfig 方法获取商店配置,例如

Mage::getStoreConfig('helloworld_options/messages/hello_message');

请参阅Alan 的博客,了解如何创建自定义配置值(您可能已经拥有)和访问它们的详细说明。

于 2013-11-12T18:58:09.913 回答
0

使用此代码重定向到引用者

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());?>

例如在自定义登录表单中:

<form method="post" action="<?php echo Mage::helper('customer')->getLoginPostUrl() ?>">
    <?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getRequest()->getRequestUri());?>
...
...
于 2014-04-10T17:31:52.113 回答