1

私は今何時間も探しています。ログイン後にストアの言語を切り替えようとしています。

与えられたものは次のとおりです。

  • 切り替えたいストアのIDも。
  • イベント オブザーバーも完了です。

これは私が過去数時間で取り組んだことです

私の観察者:

$customerId = Mage::getModel('customer/session')->getCustomer()->getId();
// Get the Store ID we want to switch too
$connection = Mage::getSingleton('core/resource')->getConnection('distributor_read');
$mainLanguage = $connection->fetchAll('SELECT...');

$storeId = $mainLanguage[0]["store_id"];
if (!$storeId == null) {                
    $storeCode = Mage::app()->getStore($storeId)->getCode();
    // Here I have to switch by the store code
    return;
}

誰かが私を助けてくれたらうれしいです。少なくとも、言語またはストアビューを切り替えるメソッドが必要ですが、動作する MagentoAPI メソッドが見つかりません。

4

2 に答える 2

0

今回の件で私がしたことをお話しします。クラスを取得しようとしましたがMage_Core_Controller_Response_Http、完全に無駄でした。

それで私は研究を続け、解決策を見つけました。

私が使用した:

header('Location: '. Mage::app()->getStore()->getBaseUrl().'/customer/account?___store='.$storeCode);

さて、私のログインオブザーバーは言語を設定しました。

編集:

新しいヘッダーを設定すると、いくつかの問題が発生する可能性があります。これは、HTML の一部が既にレンダリングされている場合、新しいヘッダーを設定できないためです。

私は働きました。そうでなければ:

$url = Mage::getUrl('*/*');
$url .= "?___store=" . $storeCode;

$response = Mage::app()->getFrontController()->getResponse();

$response->setRedirect($url);
$response->sendResponse();
exit();

明らかにまだ問題があります。exit は適切なソフトウェア コードでは使用すべきではありreturnませんが、単純な方法では機能せず、オブザーバー アクションを終了または強制終了しません。私はまだオブザーバーを正しい方法で殺すための解決策に取り組んでいます。私が言ったように、URLをリダイレクトするにはオブザーバーを殺す必要があります。

于 2013-07-23T08:22:24.107 に答える