Совместное использование переменных сеанса пользователя между Magento и Symfony - PullRequest
1 голос
/ 17 июня 2010

Одна часть нашего сайта будет построена с использованием Symfony , другая Magento .Я хотел бы знать, возможно ли разделить переменные сеанса пользователя между двумя из них.

Спасибо!

1 Ответ

2 голосов
/ 30 декабря 2010

После долгих проб и ошибок я создал следующую работу. Это основано на ситуации, когда вход в систему управляется платформой, отличной от Magento.

Мне не удалось найти способ поделиться сессией с Magento, которая была инициализирована за пределами Magento. Вместо этого я создал простое расширение Magento, которое подключается к наблюдателю событий 'http_response_send_before'.

Теперь, когда Magento загружает страницу, модуль проверяет, вошел ли пользователь в другую систему. Если так, он получает электронную почту этого пользователя и регистрирует пользователя в Magento, используя адрес электронной почты в качестве идентификатора, и устанавливает сеанс для этого клиента. Очевидно, что клиент должен уже существовать в Magento, чтобы войти в систему.

Вот файлы и код, содержащийся внутри. Не стесняйтесь изменять для работы с вашей системой.

/ приложение / код / ​​местные / Verve / Session / и т.д. / config.xml

<config>
<modules>
    <Verve_Session>
        <version>0.5.1</version>
    </Verve_Session>
</modules>
<frontend>
    <events> 
        <http_response_send_before>
            <observers>
                <session_login>
                    <type>model</type> 
                    <class>Verve_Session_Helper_Login</class> 
                    <method>loginEvent</method>
                </session_login> 
            </observers>
        </http_response_send_before>
    </events> 
</frontend>

/ приложение / код / ​​местные / Verve / Session / Helper / login.php

 class Verve_Session_Helper_Login extends Mage_Core_Helper_Abstract 
 { 

static function loginEvent($observer) { 

    $session = Mage::getSingleton('customer/session');

    if (!$session->isLoggedIn()) {


        YOUR CODE HERE, FIND EMAIL OF LOGGED IN USER


        if(@$email){

            $customer   = Mage::getModel('customer/customer'); 
            $customer->loadByEmail($email); 
            $session    = Mage::getSingleton('customer/session'); 
            $session->start();
            $session->setCustomer($customer);
            $url        = $_SERVER['REQUEST_URI'];
            Mage::app()->getFrontController()->getResponse()->setRedirect($url);

        }


    }   

}

 }

/ приложение / и т.д. / модули / Verve_Session.xml

<config>
<modules>
    <Verve_Session>
        <active>true</active>
        <codePool>local</codePool>
    </Verve_Session>
</modules>
</config>
...