2013-11-12 6 views
0

У меня есть модуль, который установил страницу CMS с некоторым URL-адресом по умолчанию и некоторым текстом с формой. На этой форме у меня есть поля и отправьте. Я проверяю свои поля с помощью ajax (отправьте POST в контроллер моего модуля). Если проверка правильна, я перенаправляюсь на ту же страницу с сообщением «succes».Magento перенаправляет страницу на страницу

Проблема заключается в том, что по умолчанию URL этой страницы CMS, в которой я делаю перенаправление после succes submit, можно изменить в BO - вот почему я не могу просто $this->_redirect('default_URL') в моем контроллере, потому что этот URL-адрес можно изменить.

Что мне делать?

EDIT: Решение: использование $ это -> _ redirectReferer() в мой контроллер после проверки успеха

ответ

3

Попробуйте поместить «обратный URL» в вашу форму как скрытое поле, или вы можете использовать $ this -> _ redirectReferer() для перенаправления на страницу CMS.

См http://docs.magentocommerce.com/Mage_Core/Mage_Core_Controller_Varien_Action.html#method_redirectReferer

Если вы хотите перенаправить в какой-то определенной CMS страницы (а не тот, где помещается форма), вы можете сделать это:

  1. Добавить выпадающее меню для конфигурации системы, чтобы иметь возможность выберите «страницу Success» (гораздо лучше, чем жёстко к страница ID)

  2. Перенаправить на эту страницу в контроллере

Код:

$pageId = Mage::getStoreConfig('mymodule/config/success_page'); 
$page = Mage::getModel('cms/page')->load($pageId); 
$this->_redirect($page->getUrlKey()); 
0

Вы можете получить в магазине конфигурации с помощью метода getStoreConfig, что-то вроде

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

См Alan's blog, о подробных инструкциях по созданию пользовательских значений конфигурации (которые у вас могут быть уже есть) и доступа к ним.

+0

Хм, от этого я вижу, что получить url из config, но он будет статичным или мне нужно всегда изменять значение, если кто-то перейдет на страницу BO-> CMS и выберите эту страницу и измените URL-адрес. Но я хочу иметь динамику. Если кто-то (это будет администратор) изменит значение для этой страницы в BO, в конце концов после того, как succes submit перенаправит меня на той же странице. – sergio

+0

Я не уверен, что я правильно понимаю ваш комментарий, но Mage :: getStoreConfig IS динамически считывает это значение из базы данных, независимо от того, что администратор в последний раз изменил. Или вы имеете в виду что-то другое? –

+0

Я думаю, что Sergio означает, что URL-адрес настраивается в Backoffice> CMS> ..., а не в System> Configuration. – Sergey

0

Используйте этот код для перенаправления на Referer

<?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());?> 
... 
... 
Смежные вопросы