1

I'm searching now for hours. I try to switch the store language after the login.

Given is:

  • The id of the Store I want to switch too.
  • The Event Observer is also done.

This is what I worked out the last hours

My Observer:

$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;
}

Would be glad if someone could help me out. At least I need a method to switch the language or storeview, but I don't find any working MagentoAPI methods.

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 回答
0

以编程方式设置商店 ID

在 index.php 文件中(在您的语言特定文件夹中),添加以下内容:-

$store_id = 'your_store_id_here';
$mageRunCode = 'store view code';
$mageRunType = 'store';

Mage::app()->setCurrentStore($store_id);
Mage::run($mageRunCode, $mageRunType);

我建议您从登录操作中创建一些临时会话变量并在 index.php 中读取以设置语言包,如果您的工作已完成,请再次取消设置

希望有人会发现这些信息有用:)

于 2013-07-21T06:42:08.057 回答