2012-01-10 8 views
1

これはおそらく初心者の面白い質問ですが、これを理解することはできません。私はMagentoストアのWebサービス(MagentoストアのコードはリモートWebサービスにアクセスしています)で作業しています。この場合、私は参照する必要のあるローカルWSDLファイルを持っています。私はWSDLファイルへのリモートURLを使用する前にこれを行いました。しかし、ローカルファイルでは、参照する方法を理解できません。私はサイトのルートのwsdlサブディレクトリにファイルを置くことによってそれを働かせて、http://mysite/wsdl/thefile.wsdlを使って参照することができます。しかし、私はそれを参照するために相対パスを使用することをお勧めしたいと思います(主に、同じコードを別のサイトに展開し、すべて同じコードを使用したいと考えているためです)。あなたはこの$client = new SoapClient("thefile.wsdl")のようにPHPののSoapClientのインスタンスをインスタンス化するとき、どこでthefile.wsdlを探しています:Magento、SoapClient、およびローカルWSDL

は、私は私の質問はこれに尽きると思いますか?私はそれがSoapClientをインスタンス化するPHPファイルのローカルだと思ったが、同じフォルダにファイルを置くと機能しなかった。私は/ディレクトリだけでなく、のアプリケーション/コード/ローカルを含めてみました。

私はSOAPの男ではないんだけど、あなたの質問には意味がありません...

答えて

3

ミステリー解決します!これはおそらくほとんどの人には明らかですが、私はそれを学ばなければならなかったので、おそらく他の誰かがそれから恩恵を受けるでしょう。

Magentoの設計上、すべてのページの「ルート」は/index.phpであることはわかりませんでした。すべてのページがロードされているので、コースのルートになります。 SoapClientをインスタンス化しようとすると、現在のモジュール/クラスファイルではなく、メインルートスクリプトファイルのディレクトリが検索されます。 WSDLファイルをWebサーバーのルートに置いて、それらを正常にロードしました(前に試していなかったと思います...)。

私が今行ったことは、それらを/ mediaディレクトリに移動することです。getBaseDir('media')を使用してメディアディレクトリを取得し、サブディレクトリのパスをタップし、VIOLA!

2

私は、これはベテランプログラマのための非常に簡単ではないと確信しているが、時には基本は私をほのめかします。 Soapは、HTTP経由でリモートメソッド呼び出しを行うためのプロトコルです。 WSDLファイルは、クライアントがリモート・サーバーから要求して、どのメソッドが使用可能で、どのようにメソッドを呼び出すことができるかを尋ねるファイルです。 「ローカルWSDLファイル」は意味をなさない。

+2

WSDLファイルは、サービスのサーバーでホストされるのではなく、インテグレータに配布されることがあります。個人的には、それはasinineだと思うが、それは終わった。この場合、それはサービスの開発版用です...私はプロダクションサーバがWSDLをホストしていると思います。それにもかかわらず、それは私を困惑させた... – BrianVPS

0

あなたの質問がmagentoに関する場合は、モジュールを作成する必要があります。 wsdl.xmlを作成します(カタログのモジュールwsdl.xmlとapi.xmlファイルを参照してください)。

もっとMagentoの石鹸APIについてhere

UPDATE 1

まあサービスは、別のホスト上にある場合、あなたはMagentoのサービス消費と同様に消費することができるはずです。 ZendのFMについて

チェックアウトこのlink

+0

ありがとう、しかし私はあなたが誤解したと思う。私は私のMagentoストアに接続することに興味はありません、私はMagentoストアからリモートWebサービスに接続することに興味があります。私は、リクエストを作成してレスポンスを処理するためのすべてのロジックを実行するために作成したモジュールを用意していますが、問題は私が送ったWSDLをどこに置くか、そしてSoapClientをインスタンス化する際の参照方法です。 – BrianVPS

0

ローカルファイルパスを生成するMagentoの組み込み関数を使用する必要があります。 WSDLがメディアディレクトリに格納されていると、WSDLがリモートで@AlanStormにホストされていない可能性があるため、パブリックにアクセスできるので賢明ではありません。

カスタムモジュールのetcディレクトリにファイルを保存することをお勧めします。サンプルコード:

$vWsdlPath = Mage::getModuleDir('etc', 'YourModule_NameHere').'/wsdl/SomeFile.wsdl'; 
$soap = new Zend_Soap_Client($vWsdlPath, $aOptions); 
関連する問題