2011-01-05 67 views
3

我想用web服務請求(soap v2)在Magento中創建類別。 我使用Magento 1.4.2.0,正如我所說的magentos soap api v2。Magento用肥皂創建類別v2

如果我把我碰到下面的錯誤作爲響應的請求:

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Body> 
<SOAP-ENV:Fault> 
    <faultcode>103</faultcode> 
    <faultstring>Attribute "include_in_menu" is required.</faultstring> 
    </SOAP-ENV:Fault> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

的問題是,該XML標記「include_in_menu」是不是在要求提供。 如果我手動添加此標籤,它將被忽略。

如果我不想使用soap v.1,該怎麼辦?

問候LStrike

PS:這是我的要求:

<?xml version="1.0" encoding="UTF-8"?><?xe.source ../../../Common/Data/login_response.xml#Envelope?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" media-type="text/xml"></xsl:output> 
    <xsl:template match="/"> 
    <soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:urn="urn:Magento" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <soapenv:Header></soapenv:Header> 
     <soapenv:Body> 
     <urn:catalogCategoryCreate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
      <sessionId xsi:type="xsd:string"> 
      <xsl:value-of select="soapenv:Envelope/soapenv:Body/urn:loginResponse/loginReturn"></xsl:value-of> 
      </sessionId> 
      <parentId xsi:type="xsd:int"> 
      <xsl:value-of select="'3'"></xsl:value-of> 
      </parentId> 
      <categoryData xsi:type="urn:catalogCategoryEntityCreate"> 
      <!--You may enter the following 19 items in any order--> 
      <!--Optional:--> 
      <name xsi:type="xsd:string"> 
       <xsl:value-of select="'TestKategorie'"></xsl:value-of> 
      </name> 
      <!--Optional:--> 
      <is_active xsi:type="xsd:int"> 
       <xsl:value-of select="'1'"></xsl:value-of> 
      </is_active> 
      <!--Optional:--> 
      <position xsi:type="xsd:int"></position> 
      <!--Optional:--> 
      <available_sort_by soapenc:arrayType="xsd:string[2]" xsi:type="ns1:ArrayOfString"> 
       <item xsi:type="xsd:string">name</item> 
       <item xsi:type="xsd:string">price</item> 
      </available_sort_by> 
      <!--Optional:--> 
      <custom_design xsi:type="xsd:string"></custom_design> 
      <!--Optional:--> 
      <custom_design_apply xsi:type="xsd:int"></custom_design_apply> 
      <!--Optional:--> 
      <custom_design_from xsi:type="xsd:string"></custom_design_from> 
      <!--Optional:--> 
      <custom_design_to xsi:type="xsd:string"></custom_design_to> 
      <!--Optional:--> 
      <custom_layout_update xsi:type="xsd:string"></custom_layout_update> 
      <!--Optional:--> 
      <default_sort_by xsi:type="xsd:string"><xsl:value-of>name</xsl:value-of></default_sort_by> 
      <!--Optional:--> 
      <description xsi:type="xsd:string"></description> 
      <!--Optional:--> 
      <display_mode xsi:type="xsd:string"></display_mode> 
      <!--Optional:--> 
      <is_anchor xsi:type="xsd:int"></is_anchor> 
      <!--Optional:--> 
      <landing_page xsi:type="xsd:int"></landing_page> 
      <!--Optional:--> 
      <meta_description xsi:type="xsd:string"></meta_description> 
      <!--Optional:--> 
      <meta_keywords xsi:type="xsd:string"></meta_keywords> 
      <!--Optional:--> 
      <meta_title xsi:type="xsd:string"></meta_title> 
      <!--Optional:--> 
      <page_layout xsi:type="xsd:string"></page_layout> 
      <!--Optional:--> 
      <url_key xsi:type="xsd:string"></url_key> 

      <!-- selbst definierte Felder --> 
      <include_in_menu xsi:type="xsd:int">1</include_in_menu> 


      </categoryData> 
      <storeView xsi:type="xsd:string"> 
      <xsl:value-of select="'default'"></xsl:value-of> 
      </storeView> 
     </urn:catalogCategoryCreate> 
     </soapenv:Body> 
    </soapenv:Envelope> 
    </xsl:template> 
</xsl:stylesheet> 

回答

5

你有4種方式。

首先 - 更改 應用程序/代碼/核心/法師/目錄的/ etc /線188之後wsdl.xml 添加

<element name="include_in_menu" type="xsd:int" minOccurs="0" /> 

二 - API模型 應用程序/代碼/核心/法師的變化邏輯/Catalog/Model/Category/Api/V2.php 在代碼中將此屬性添加到新的 對象。

三 - 報告錯誤到的Magento和 等待,直到它解決了(近1-2 月)

四 - 而且至少創建你 擴展,你只覆蓋 應用程序/代碼/核心/法師/目錄/ etc/wsdl.xml 將您的參數添加到WSDL文件中, 更改您的擴展 中的API模型以獲取更多參數。

我的建議使用第四種方式。

+0

哇,這很快;)感謝您的回答,我會嘗試。 – LStrike 2011-01-05 13:28:08

+1

更好地使用第四種方式,並在1-2個月內等待下一個Magento發佈 - 修復這個bug包含在其中。 – 2011-01-06 10:43:32

+1

我在1.5版本中遇到了這個錯誤...您聲稱修復是在下一個版本中? – dmose 2011-03-14 19:34:17