我试图在登录后将 Magento 中的特定用户重定向到 products.html 页面。由于重定向过多,我尝试执行此操作的大多数方式(setRedirect、header)都会导致循环。
目前,我正在尝试使用观察者来 setParam('return_url', "$customerRedirectUrl") 如这篇相当受欢迎的帖子 - Magento - Redirect Customer from Observer Method中所述。变量 $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 - 从观察者方法重定向客户帖子我没有得到什么(很有可能我只是因为是一个相当新的用户而忘记了某些事情)?观察者位于 controller_action_postdispatch 下的相关配置文件中,并且位于观察者模型中。让 setParam 正确运行的上下文是什么?
感谢您的帮助!