Magento-通过Observer登录时重定向
我正在尝试在登录后将Magento中的特定用户重定向到products.html页面。我尝试这样做的每一种方式(setRedirect,header)都会由于重定向太多而导致循环 目前,我正在尝试使用一个观察者来设置参数('return_url',“$customerRedirectUrl”),正如这篇颇受欢迎的文章中所描述的那样。变量$customerRedirectUrl表示一种逻辑,它一起可靠地创建了我知道我想要的页面的url。我的相关代码如下所示Magento-通过Observer登录时重定向,magento,redirect,observers,Magento,Redirect,Observers,我正在尝试在登录后将Magento中的特定用户重定向到products.html页面。我尝试这样做的每一种方式(setRedirect,header)都会由于重定向太多而导致循环 目前,我正在尝试使用一个观察者来设置参数('return_url',“$customerRedirectUrl”),正如这篇颇受欢迎的文章中所描述的那样。变量$customerRedirectUrl表示一种逻辑,它一起可靠地创建了我知道我想要的页面的url。我的相关代码如下所示 public function r
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()。
那我没有收到的帖子呢(作为一个新用户,我很有可能只是忘记了一些东西)?观察者在相对配置文件中的controller_action_postdispatch下进行布局,并位于观察者模型中。让setParam正确运行的上下文是什么
感谢所有人的帮助 当使用
$observer->getRequest()
实例化对象时遇到问题,请尝试改用$observer->getEvent()->getFront()->getResponse()
。我相信这取决于观察者正在侦听的事件。当您在使用$observer->getRequest()
实例化对象时遇到问题,请尝试改用$observer->getEvent()->getFront()->getResponse()
。我相信这取决于观测者正在收听的事件。我知道这篇文章有点老了,但我知道它是为我自己的模块设计的
我在两个不同的事件上运行重定向。当客户注册或客户登录时
<customer_register_success>
<observers>
<redirectAfterRegister>
<class>businessdirectory/profile_observer</class>
<method>redirectAfterRegister</method>
</redirectAfterRegister>
</observers>
</customer_register_success>
<customer_login>
<observers>
<redirectAfterLogin>
<class>businessdirectory/profile_observer</class>
<method>redirectAfterLogin</method>
</redirectAfterLogin>
</observers>
</customer_login>
我知道这篇文章有点老了,但我知道它是为我自己的一个模块设计的 我在两个不同的事件上运行重定向。当客户注册或客户登录时
<customer_register_success>
<observers>
<redirectAfterRegister>
<class>businessdirectory/profile_observer</class>
<method>redirectAfterRegister</method>
</redirectAfterRegister>
</observers>
</customer_register_success>
<customer_login>
<observers>
<redirectAfterLogin>
<class>businessdirectory/profile_observer</class>
<method>redirectAfterLogin</method>
</redirectAfterLogin>
</observers>
</customer_login>
谢谢Francis,但是我得到了和以前一样的错误,有趣的是,在你的建议中调用的新方法没有一个失败。但是,是的,仍然是致命错误:对非对象调用成员函数setParam()。您可以尝试
var_dump($observer)
,$var_dump($observer->getRequest())
等吗?嗯,var_dump($observer)返回许多不同的东西,但是var_dump($observer->getRequest())返回空值。谢谢Francis,但我得到的错误和以前一样,有趣的是,在你的建议中调用的新方法没有一个失败。但是,是的,仍然是致命的错误:对非对象调用成员函数setParam()。您可以尝试var\u dump($observer)
,$var\u dump($observer->getRequest())
等吗?嗯,var\u dump($observer)返回许多不同的东西,但是var\u dump($observer->getRequest())返回NULL。