我有一个默认的CodeIgniter 2.1安装Magento 10.4.4安装在一个名为商店的子目录。如何从CodeIgniter访问Magento?
以下代码在从web根目录运行(禁用.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;
?>
但是,如果我在一个笨模型运行它,然后isLoggedIn
返回false。
这里是笨页:
<?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;
}
}
笨正在做的东西,我一直无法跟踪呢。 websiteId返回正确,但isLoggedIn
返回false。
任何人有任何想法?谢谢!!
当我使用法师::应用程序('默认','商店',$选项=空);它一直在抛出错误,但是当我写了Mage :: app();每件事情都很好 – 2014-03-13 15:27:08
感谢您的评论,Ashraf!但是这个解决了。我的答案显示了一个工作示例。 – wclark 2014-03-13 15:47:23
我只是想帮助任何人面对我遇到的同样的问题。代码很棒。他帮了我很多,并节省了很多时间。 – 2014-03-13 21:08:38