1

「OrderSave」イベントをリッスンし、サードパーティ アプリケーションへの API 呼び出しを実行する Magento モジュールを作成しました。ほとんどの機能は問題なく動作していますが、API からの XML 応答を処理する必要があり、PEAR XML_Unserializer クラスを使用しようとすると、次のエラーが発生しました。

致命的なエラー: require_once() [function.require]: 必要な 'XML/Parser.php' を開くことができませんでした (include_path='/Users/jeremymoore/Sites/Helm/html/app/code/local:/Users/jeremymoore/Sites/ Helm/html/app/code/community:/Users/jeremymoore/Sites/Helm/html/app/code/core:/Users/jeremymoore/Sites/Helm/html/lib:.:/Applications/MAMP/bin/php5 /lib/php:/usr/loca/zend//share/ZendFramework/library') の /Users/jeremymoore/Sites/Helm/html/lib/PEAR/XML/Unserializer.php 行 58

私のモジュールには、次のように見えるモデルに Observer.php ファイルがあります。

<?php
require_once 'lib/PEAR/XML/Serializer.php';
require_once 'lib/PEAR/XML/Unserializer.php';
require_once 'lib/Pest/PestXML.php';
Zend_Loader::registerAutoload();

class Helm_Litmos_Model_Observer
{
    public function hookToOrderSaveEvent()
    {
        //Do API Stuff Here
    }
}

hookToOrderSaveEvent 関数は、シリアライザー クラスとアンシリアライザー クラスの新しいインスタンスを作成します。Unserializer コードを追加する前は、オブジェクトのシリアル化と API 呼び出しを行うすべての作業が完了していました。XML_Unserializer クラスが Parser.php を参照しようとすると、問題が発生するようです。

ここで使用している「require_once」メソッドが、これらのライブラリを含める適切な方法であるかどうかはわかりません。MAMP を実行しているローカル マシンで現在使用されている Magento 1.4.1.1 を使用しています。

私のモジュールで使用するためにこれらのライブラリをオートロードまたは含めるためのより良い方法に関する提案、または私が持っているものを修正する方法に関する単なるアイデアをいただければ幸いです。

ありがとう

4

1 に答える 1

1

あなたは試して使うことができますMage::getBaseDir('lib')

require_once Mage::getBaseDir('lib').'/PEAR/XML/Serializer.php';

Alan には、Magento のベース ディレクトリに関する優れた記事があります。

http://alanstorm.com/magento_base_directories

于 2011-06-20T15:35:18.963 に答える