Frage

Ich verwende Magento CE 1.7.0.2 mit SOAPV2 und WS-I. Ich versuche Produkte mit dem zu aktualisieren catalogProductUpdate-Methode.

Die Beschreibung im folgenden Codebeispiel wird aktualisiert, der Hersteller-Attribute (= Select) nicht. Das Ergebnis von catalogProductUpdate ist bool(true).

Ich habe einige (nicht zu gut, aber ich bin verzweifelt ;-)) Variationen wie:

  1. Weisen Sie den Ganzzahlwert 777 zu $manufacturer->value Setzen Sie den Wert
  2. In/Ohne das Feld CULTUR_ATTRIBUTES Setzen Sie die Produkt -ID (aber ich bin sicher, dass es in zusätzlichen_attributes festgelegt werden muss)
  3. Setzen Sie den Herstellernamen als $manufacturer->value anstelle des Wertes 777

Code:

$newProductData = new stdClass();
$additionalAttrs = array();

$manufacturer = new stdClass();
$manufacturer->key = "manufacturer";
$manufacturer->value = "777";
$additionalAttrs['single_data'][] = $manufacturer;

$newProductData->description = "Description Test1";
$newProductData->additional_attributes = $additionalAttrs;

$result = $client->catalogProductUpdate((object)array('sessionId' => $sessionId,
        'productId' => "2110000010058 ",
        'productData' => (object)$newProductData,
        NULL,
        'sku'
    ));

Bearbeiten:

  • Ich habe es mit SOAPV2 ohne WS -I getestet - funktioniert gut.
  • Ich habe auch ein weiteres Attribut zum Testen mit denselben Einstellungen (Dropdown, Scope, ...) erstellt, das auch nicht mit SOAPV2 WS-I aktualisiert wird, sondern mit SOAPV2. Diese neu erstellten Attribute verhalten sich also als Hersteller-Attribute.
  • Der Versuch, den Wert eines Textfeldes in den zusätzlichen_Ttributes festzulegen, funktioniert auch nicht.

Irgendwelche Ideen, Links, Vorschläge dazu?

Verknüpfung:http://www.magentocommerce.com/api/soap/catalog/catalogproduct/catalog_product.update.html

War es hilfreich?

Lösung

Ich fand schließlich den Grund für das Problem und die Lösung:

Das Problem: SOAPV2 mit WS-I verwendet das nicht single_data und multi_data Attribute. Daher der Check -ins /app/code/core/Mage/Catalog/Model/Product/Api/V2.php in _prepareDataForSave scheitert. Die Methode _prepareDataForSave Überprüfungen für single_data und multi_data die beide nicht Teil des Soap-Anlaufs sind, laut der WSDL für SOAPV2 mit WS-I.

SOAPV2 (WSDL) - CATALOGPRODUCTCREATEETITY:

<element name="additional_attributes" type="typens:catalogProductAdditionalAttributesEntity" minOccurs="0"/>

SOAPV2 mit WS -I (WSDL) - KatalogproduktcreateEntity:

<xsd:element name="additional_attributes" type="typens:associativeArray" minOccurs="0">
</xsd:element>

AssociativeArray ist vom Typ Assoziativität, der Schlüssel-/Wertpaare enthält. In Soapv2 withous ws-i, die catalogProductAdditionalAttributesEntity wird verwendet (die aus Single_data- und/oder multi_data -Werten besteht, die erneut Schlüssel-/Wertpaare enthalten).

Dies ist der SOAPV2 WS-I-Teil des WSDL, der das Format von zusätzlichem_Tributes beschreibt:

<xsd:complexType name="associativeEntity">
   <xsd:sequence>
      <xsd:element name="key" type="xsd:string"/>
      <xsd:element name="value" type="xsd:string"/>
   </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="associativeArray">
   <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:associativeEntity"/>
   </xsd:sequence>
</xsd:complexType>

Die Prüfung für zusätzliche_attributes /app/code/core/Mage/Catalog/Model/Product/Api/V2.php Gut formuliert, aber die Prüfung für Single_Data oder Multi_Data hat immer falsch zurückgegeben.

Die Lösung:

Ich fand ein weiteres Seifenproblem hier Wo die letzte Antwort die Lösung für mein Problem war: https://stackoverflow.com/a/9502311/865443). Also stecke ich diesen Block in meinen Code ein _prepareDataForSave Dies löste das Problem der Einstellung der zusätzlichen Werte für die Einstellung:

if (gettype($productData->additional_attributes) == 'array') {
            foreach ($productData->additional_attributes as $k => $v) {
                    $_attrCode = $k;
                    $productData->$_attrCode = $v;
            }
  }

Ich hoffe, dass dies jemand anderem hilft, auf dasselbe Problem zu stoßen. Ich würde mich auch über eine Erklärung für diesen Unterschied zwischen SOAPV2 und SOAPV2 WS-I und/oder anderen Möglichkeiten freuen, die dieses Problem lösten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top