Как получить доступ к Magento из CodeIgniter? - PullRequest
0 голосов
/ 15 февраля 2012

У меня установлен CodeIgniter 2.1 по умолчанию с Magento 10.4.4, установленным в подкаталоге store.

Следующий код работает при запуске из корня сети (с отключенным .htaccess).Это даст имя, фамилию вошедшего в систему пользователя Magento.

<?php
$site_root = '/var/www/mysite/www/httpdocs';
require_once ($site_root . '/store/app/Mage.php');
umask(0);
// Initialize Magento and hide sensitive config data below site root
$name='frontend';
$options = array('etc_dir' => realpath('../magento-etc'));
Mage::app('default','store', $options);
Mage::getSingleton("core/session", array("name" => $name));
$websiteId = Mage::app()->getWebsite()->getId();
echo "websiteid: $websiteId<br>";
$store = Mage::app()->getStore();

$customer = Mage::getModel("customer/customer");
$customer->website_id = $websiteId;
$customer->setStore($store);
echo 'customerwebsiteId: ' . $customer->website_id . '<br>';
$session = Mage::getSingleton('customer/session');
$magento_message = 'Welcome ';
// Generate a personalize greeting
if($session->isLoggedIn()){
  $magento_message .= $session->getCustomer()->getData('firstname').' ';
  $magento_message .= $session->getCustomer()->getData('lastname').'!';
}else{
  $magento_message .= 'Guest!';
}
echo $magento_message;
?>

Но если я запусту это в модели CodeIgniter, то isLoggedIn вернет false.

Вот страница CodeIgniter:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Test_mage extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $site_root = '/var/www/mysite/www/httpdocs';
        require_once ($site_root . '/store/app/Mage.php');
        umask(0);
        // Initialize Magento and hide sensitive config data below site root
        $name='frontend';
        $options = array('etc_dir' => realpath('../magento-etc'));
        Mage::app('default','store', $options);
        Mage::getSingleton("core/session", array("name" => $name));

        $websiteId = Mage::app()->getWebsite()->getId();
        echo "websiteid: $websiteId<br>";
        $store = Mage::app()->getStore();

        $customer = Mage::getModel("customer/customer");
        $customer->website_id = $websiteId;
        $customer->setStore($store);
        echo 'customerwebsiteId: ' . $customer->website_id . '<br>';

        $session = Mage::getSingleton('customer/session');
        $magento_message = 'Welcome ';
        // Generate a personalize greeting
        if($session->isLoggedIn()){
            $magento_message .= $session->getCustomer()->getData('firstname').' ';
            $magento_message .= $session->getCustomer()->getData('lastname').'!';
        }else{
            $magento_message .= 'Guest!';
        }

        echo $magento_message;

    }
}

CodeIgniter делает то, что я пока не смог отследить.Идентификатор websiteId возвращается правильно, но isLoggedIn возвращает false.

У кого-нибудь есть идеи?СПАСИБО !!

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Я использую оба, но я никогда не пытался их растирать.Я предвижу довольно много проблем.

Как вы исправляетесь в magento?

Возможно, вам понадобятся два соединения БД:

$db['magento']
$db['default'] // codeigniter default

Сессии могут стать настоящей проблемой здесьтакже как и данные конфигурации.

Подумайте о том, чтобы сейчас придерживаться magento, а затем, возможно, подключиться к вашему блогу / веб-сайту через службу RESTFul.

1 голос
/ 15 февраля 2012

Оба примера кода выше работают нормально. У меня была проблема с вызовом session_start () в верхней части файла CodeIgniter index.php. Как только это было удалено, все это начало работать.

Для потомков, вот библиотека Magento 10 для CodeIgniter 2.1:

приложения / библиотеки / magento.php

<?php if ( ! defined('BASEPATH')) exit("No direct script access allowed");

Class Magento {

  function __construct($params)
  {
    global $site_root;
    $name = $params['name'];
    // Include Magento application
    require_once ($site_root . '/store/app/Mage.php');
    umask(0);
    // Initialize Magento and hide sensitive config data below site root
    // Uncomment next line if you have moved app/etc
    // $options = array('etc_dir' => realpath('../magento-etc'));
    Mage::app('default','store', $options=null);
    return Mage::getSingleton("core/session", array("name" => $name));
  }
}
// end of magento.php

Пример использования app / model / test_mage.php

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 class Test_mage extends CI_Controller {

  function __construct()
  {
    parent::__construct();
    $params = array('name' => 'frontend'); // frontend or adminhtml
    $this->load->library('magento', $params);
  }

  public function index()
  {
    $session = Mage::getSingleton('customer/session');
    $magento_message = 'Welcome ';
    // Generate a personalize greeting
    if ($session->isLoggedIn())
    {
      $magento_message .= $session->getCustomer()->getData('firstname').' ';
      $magento_message .= $session->getCustomer()->getData('lastname').'!';
    }
    else
      $magento_message .= 'Guest!';

    echo $magento_message . '<br>';
  }
}
// end of test_mage.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...