Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Не запомниает пользователя при установленном checkbox remember_me
 
Dzurillo
Jr. Member
 
Total Posts:  28
Joined:  2013-03-11
 

Здравствуйте!

Обнаружил такую проблему - перестало запомниать пользователя, при уставновленном чекбоксе ‘remember_me’ (при логине и при регистрации). Причем после установки Magento эта функция работала, я проверял ставил галочку и меня запоминало. Может это быть из-за какого-либо стороннего модуля? Если да, то как проще найти ?
Беглый поиск по исходникам дал, что есть родные модули, которые прописывают observers:

<observers>
<persistent>
<class>persistent/observer_session</class>
<method>setRememberMeCheckedStatus</method>
</persistent>
</observers>

внутри метода высталяется переменная $this->_isRememberMeChecked = $checked;

Подскажите пож-та, как дальше разобраться почему не запоминает пользователя ?

Спасибо.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dzurillo
Jr. Member
 
Total Posts:  28
Joined:  2013-03-11
 

Здравствуйте!

Друзья, помогите все-таки разобраться с проблемой.
Так и не могу добиться, чтобы клиента авторизовало по кукису (после заркытия браузера с выставленной опцией remeber_me)
Выглядит это так - в шапке пишет приветствие welcom_msg (Здравствуйте Username), но меню рядом выводит, как для анонимного пользователя.
Я в header.phtml вставил две строчки:

<?php
$_persistent = Mage::helper('persistent/session')->getustomer();
$_customer = Mage::helper('customer')->getCustomer();
?>

Смотрю в отладчике с $_persistent все в порядке - объект класса Mage_Customer_Model_Customer, у него свойство $this->_data Array[23]
Там вижу entity_id, email и пр. информацию по клиенту.
А вот $_customer - тоже Mage_Customer_Model_Customer, только $this->_data у него Array[1] и там только website_id.
Провалился отладчиком внутрь метода getCustomer() в Mage_Customer_Model_Customer, проблема похоже вот здесь:

public function getCustomer() {

...
if ($this->getId()) {
$customer->load($this->getId());
}

$this имет свойство _data - Array[5]:
‘customer_id’=> 1234
‘customer_group’ => 4
‘id’ => NULL

Соотвественно getId() ничего не возвращает.

Собственно вопрос - что делать ?
Я уже отключил все модули, которые хоть как то связаны с клиентами.
Не переставлять же Magento..

Спасибо.

 
Magento Community Magento Community
Magento Community
Magento Community
 
niro
Mentor
 
Avatar
Total Posts:  1609
Joined:  2009-03-04
Latvia, Riga
 

Не думайте, что никто не видит ваш вопрос.
Предполагаю, что по предоставленным данным очень сложно понять в чём именно проблема.
Без доступа к реальному сайту вряд-ли вам кто-то сможет помочь. Да и времени просто не хватает взять и потестировать как ведёт себя эта функция на чистом сайте.

Думаю вам не стоит сразу переустанавливать магазин, но поставить тестовую демо версии и посмотреть как работает там - стоит. И уже по результатам проверки искать где именно проблема.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Dzurillo
Jr. Member
 
Total Posts:  28
Joined:  2013-03-11
 

Здравствуйте еще раз!

Спасибо за отклик!
В общем, я пошел по пути наименьшего спортивленния - переписал у себя в модуле метод из Mage_Customer_Model_Session вот так:

public function getCustomer() {
    
if ($this->_customer instanceof Mage_Customer_Model_Customer{
      
return $this->_customer;
    
}

    $customer 
Mage::getModel('customer/customer')
        ->
setWebsiteId(Mage::app()->getStore()->getWebsiteId());
    if (
$this->getId()) {
      $customer
->load($this->getId());
    
elseif (($_id $this->getCustomerId())) {
      $this
->setId($_id);
      
$customer->load($_id);
    
}

    $this
->setCustomer($customer);
    return 
$this->_customer;
  
}

На первый взгляд работает.
И еще, подскажите пож-та примерную причину моей проблемы? Например, какой-либо модуль переписал определенный системный метод, или обсервер висит на каком либо ивенте и пр. Или, может быть, дело не модулях, а где то есть настройка, которая задает имя поля, по которому проверять клиента (’customer_id’ вместо ‘id’)
Просто, если я поставлю рядом тестовую Magento, нужно же знать примерно где смотреть..

Спасибо.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top