Я пытаюсь перенаправить определенных пользователей в Magento на страницу products.html после входа в систему. Почти каждый способ, которым я пытаюсь это сделать (setRedirect, заголовок), приводит к зацикливанию из-за слишком большого количества перенаправлений.
В настоящее время я пытаюсь использовать наблюдателя для setParam('return_url', "$customerRedirectUrl"), как описано в этом довольно популярном сообщении - Magento – перенаправление клиента из метода наблюдателя. Переменная $customerRedirectUrl представляет собой логику, которая вместе надежно создает URL-адрес, который, как я знаю, я хочу, чтобы страница была. Мой соответствующий код выглядит так.
public function redirect(Varien_Event_Observer $observer)
{
$helper = Mage::helper('personal_order');
$isPersonalOrderStore = $helper->isPersonalOrderStore(null);
$session = Mage::getSingleton('customer/session');
if ($isPersonalorderStore){
if(!$session->isLoggedIn()) {
$targetUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'customer/account/login';
Mage::app()->getResponse()->setRedirect($targetUrl);
} else {
$baseUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$storeName = strtolower(Mage::app()->getStore()->getName());
$storeName = str_replace(' ', '', $storeName);
$customerRedirectUrl = "$baseUrl$storeName/products.html";
$observer->getRequest()->setParam('return_url',"$customerRedirectUrl");
}
}
Важной частью для моих целей сейчас является оператор else, остальная часть функции работает нормально. Однако вызов setParam приводит к следующей ошибке:
Неустранимая ошибка: вызов функции-члена setParam() для необъекта...
Как насчет сообщения Magento - Redirect Customer from Observer Method я не получаю ( есть хороший шанс, что я просто не замечаю чего-то из-за того, что являюсь довольно новым пользователем)? Наблюдатель размещен в соответствующем файле конфигурации в разделе controller_action_postdispatch и находится в модели наблюдателя. Каков контекст для правильной работы setParam?
Спасибо всем и каждому за вашу помощь!