2012-03-19 4 views
0

カスタマーログインイベントに問題はありません。私はマゼンタの外にアプリケーション(フレックスアプリ)を持っており、顧客のログイン用のフォームがあります。私は、顧客のログインにこのコードを使用します。Magento 'customer_login'イベントがキャッチされない

require_once '../../app/Mage.php'; 
umask(0); 
Mage::app(); 

Mage::getSingleton('core/session', array('name'=>'frontend')); 
$session = Mage::getSingleton('customer/session'); 

try { 
    $session->login ($_REQUEST['username'], $_REQUEST['password']); 
    $return .= '<userid>'.$session->getCustomer()->getId().'</userid>'; 

} catch (Exception $e) { 
    $return .= '<error>'.$e->getMessage().'</error>'; 
} 

すべてがうまく機能し、顧客がログインしているが、問題は、イベントが送出されますが、メイジ::ビジターとメイジ::レポートがイベントをキャッチdoes'tし、ということです私がフレックスからプロダクトビューページに戻ると、 "report_viewed_product_index"テーブルでMySQLエラーが発生します。誰でもこれを手伝うことができます。

ありがとうございました!

答えて

0

はここHow do I create a Magento session outside of Magento?

を読んで、私の問題を解決し、私は

require_once '../../app/Mage.php'; 
    umask(0); 
    Mage::app($_REQUEST['store_id'])->init(); 

    $core_session = Mage::getSingleton('core/session', array('name'=>'frontend')); 
    $session = Mage::getSingleton('customer/session'); 

    $return = '<user>'; 

     $write = Mage::getSingleton ('core/resource')->getConnection ('core_write'); 
     $url = Mage::getUrl ('*/*/*', array ('_current' => true)); 
     Mage::getSingleton ('core/session')->setLastUrl ($url); 
     $visitor_id = $_SESSION ['core'] ['visitor_data'] ['visitor_id']; 

     if (! empty ($visitor_id)) { 
      Mage::getSingleton ('log/visitor')->setId ($visitor_id); 
     } else { 
      Mage::getSingleton ('customer/session')->setWishlistItemCount (0); 
      Mage::getSingleton ('catalog/session')->setCatalogCompareItemsCount (0); 

      $write->query ("INSERT INTO log_url_info (url, referer) VALUES (?, ?)", array ($url, Mage::helper ('core/http')->getHttpReferer (true))); 
      $url_id = $write->lastInsertId(); 
      $log_visitor = Mage::getSingleton ('log/visitor')->initServerData()->setFirstVisitAt (now())->setIsNewVisitor (true)->setLastVisitAt (now())->setLastUrlId ($url_id)->save(); 
      $write->query ("INSERT INTO log_url (url_id, visitor_id, visit_time) VALUES (?, ?, ?)", array ($url_id, $log_visitor->getId(), now())); 
      $core_session->setVisitorData ($log_visitor->getData()); 

      $visitor_id = $log_visitor->getId(); 
     } 

     try { 
      $session->login ($_REQUEST['username_cl_mag'], $_REQUEST['password_cl_mag']); 
      //$session->setCustomerAsLoggedIn($session->getCustomer()); 
      //$customer = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId()); 

      $customerId = $session->getCustomerId(); 
      $eventModel = Mage::getModel('reports/event'); 
      $eventModel->updateCustomerType($visitor_id, $customerId); 

      Mage::getModel('reports/product_index_compared') 
       ->updateCustomerFromVisitor() 
       ->calculate(); 
      Mage::getModel('reports/product_index_viewed') 
       ->updateCustomerFromVisitor() 
       ->calculate(); 

      $return .= '<userid>'.$session->getCustomerId().'</userid>'; 

     } catch (Exception $e) { 
      $return .= '<error>'.$e->getMessage().'</error>'; 
     } 

    print $return .= "</user>"; 
をやったものです
関連する問題