2012-01-14 9 views
1

私はmagento soap v2 api Webサービスを使用するためにvisual studio 2010サービス参照を使用しています。magento Webサービスフィルタ製品リストエラー非オブジェクト上のgetBackend()メンバ関数を呼び出す

PHP 5.3.8、Magentoの1.6のWindows 7にインストールするには、7.5

私はできるだけ早く私は

コールに例外にあり、フィルタを置くとしてログインし、すべての製品を一覧表示することができますが、IIS非オブジェクト上のメンバ関数getBackend()

PHPエラーログ:

PHP致命的なエラー:\ INETPUB \ wwwrootの\ Magento1620 \アプリ:Cにおける非オブジェクトにメンバ関数getBackend()の呼び出し\ code \ core \ Mage \ Eav \ Model \ Entity \ Abstract.php 816行

static void TestMagentoSoapV2Wcf() 
    { 
     MagentoService magentoService = new MagentoService(); 

     MageSvcRef.associativeEntity assoEntity = new MageSvcRef.associativeEntity(); 
     assoEntity.key = "like"; 
     assoEntity.value = "n2610"; 

     MageSvcRef.complexFilter complexFilter = new MageSvcRef.complexFilter(); 
     complexFilter.key = "sku"; 
     complexFilter.value = assoEntity; 

     MageSvcRef.complexFilter[] compFilters = new MageSvcRef.complexFilter[1]; 
     compFilters[0] = complexFilter; 

     MageSvcRef.filters filters = new MageSvcRef.filters(); 
     filters.complex_filter = compFilters; 

     string sessionId = magentoService.login("zzc000", "zzc000"); 

     var products = magentoService.catalogProductList(sessionId, filters, string.Empty); 
    } 

おかげ

答えて

1

を助けてくださいMagentoのバグのようですが、私はPHPの開発者ではないんだから、それだけでMagentoのとPHPは上のインストール反映することができるかわかりません窓

このファイルを変更

\app\code\core\Mage\Catalog\Model\Product\Api\V2.php 

ライン57-62

foreach ($filters->complex_filter as $_filter) {     
      $_value = $_filter->value; 
      $preparedFilters[$_filter->key] = array(
       $_value->key => $_value->value 
      ); 
     } 

foreach ($filters->complex_filter as $_field => $_filter) { 
      $preparedFilters[$_field] = array(
        $_filter->key => $_filter->value 
      ); 
     } 

に私はまた別のV2.phpファイルで、コードのこの部分が異なって書かれていることに気づきます。顧客のAPIは、製品と同じですが、注文APIは、PHPで正しい配列の使用を指摘することができ、この

foreach ($filters->complex_filter as $_filter) { 
      $_value = $_filter->value; 
      if(is_object($_value)) { 
       $preparedFilters[][$_filter->key] = array(
        $_value->key => $_value->value 
       ); 
      } elseif(is_array($_value)) { 
       $preparedFilters[][$_filter->key] = array(
        $_value['key'] => $_value['value'] 
       ); 
      } else { 
       $preparedFilters[][$_filter->key] = $_value; 
      } 
     } 

誰のように書かれていますか?

+1

APIドキュメントは間違って間違っていることがあります。 yourmagentoinstall.com/api/v2_soap/?wsdlにアクセスして、すべてのapi呼び出しと予想される引数のリストを取得します。 filters = ['filter' => [['key' => '値']]、 'complex_filter' => [['updated_at' => ['gt' => '2013-12-31 20:18 :59 ']]] – KPheasey