Magento 10.4.4をstoreというサブディレクトリにインストールしたデフォルトのCodeIgniter 2.1がインストールされています。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;
?>
しかし、これを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を返します。
誰もが考えている?感謝!!
私はMage :: app( 'default'、 'store'、$ options = null)を使用しました。私はMage :: app()を書いたときにエラーを投げつけ続けました。すべてのものがうまく動作します –
あなたのコメントのおかげで、アシュラフ!!しかし、これは解決されます。私の答えは実際の例を示しています。 – wclark
私はちょうど私がmet.theコードと同じ問題に直面するのを手伝いたいと思ったwonderful.itは私を助けて、多くの時間を節約しました。 –