Небольшие пояснения по этому поводу.
Существует несколько методов для редиректа. Это редирект на определенный URL например http://www.example.com/test/foo. И редирект с параметрами, но в этом случае необходимо использовать путь распознаваемый роутером (наверняка вы встречали в коде контроллеров редиректы с такими путями */* или */index и пр.).
Код применим в методах контроллеров:
Первый способ.
$this->_redirectUrl($url);Второй способ.
$params = array ("arg1" => "foo", "arg2" => "bar"); $this->_redirect($path, $params);Надо заметить, если вы включили в админке безопасные ссылки то для редиректа в админ-панели, надо сгенерировать безопасную ссылку следующим способом:
Оговорюсь сразу, тут надо применить костыль, т.к. ссылку то мы получим, но генератор вырежет из нее часть ссылающуюся на админку. Я не нашел элегантного способа обойти это, поэтому не привожу пример костыля, ибо считаю что код-костыль не имеет право на публикацию :).
// Может принимать значения и по маске роутера, например */* $path = 'admin/system_convert_profile/run' // Этот путь, к примеру, на запуск профиля импорта/экспорта $params = array ("id" => 8); $url = Mage::helper('adminhtml')->getUrl($path, $params); // Дальше код-костыль которые возвращает утеряное $this->_redirectUrl($url);Чтобы установить редирект не в контроллере надо обратиться к объекту Response.
// Для первого способа, с указанием URL $url = "http://www.example.com/"; Mage::app()->getFrontController()->getResponse()->setRedirect($url); // Для второго способа, с указанием пути (в формате роутера магенты и параметров) $path = "news/archive"; $params = array ("arg1" => "foo", "arg2" => "bar"); Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $params));
Долго разбирался с редиректом в Magento, тоже использовал костыли, но решение есть, пробовал и нашел! вот solution!
ОтветитьУдалить$path = 'admin/system_convert_profile/run';
вместо этого пути нужно использовать такой
$path = 'adminhtml/system_convert_profile/run';
тогда ссылка получится с admin/, и костылей не надо :)
Да, забавно, главное действительно красиво и просто.
Удалить