ログイン後、Magento の特定のユーザーを products.html ページにリダイレクトしようとしています。リダイレクトが多すぎるために、ほとんどすべての方法 (setRedirect、ヘッダー) でループが発生します。
現在、私はオブザーバーを setParam('return_url', "$customerRedirectUrl") に使用しようとしています。変数 $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 が正しく動作するためのコンテキストは何ですか?
助けてくれてありがとう!