0

構成可能な製品を渡すために magento を拡張しようとしています。拡張してやりたいcatalogProductCreateEntity。私がしたことは、独自のモジュールを作成し、<types>タグに次を追加してカタログ モジュール wsdl を拡張することでした。そのようです...

        <complexType name="catalogProductCreateEntity">
            <all>
                <element name="categories" type="typens:ArrayOfString" minOccurs="0" />
                <element name="websites" type="typens:ArrayOfString" minOccurs="0" />
                <element name="associated" type="typens:ArrayOfString" minOccurs="0" />
                <element name="super_attributes" type="typens:catalogProductLinkEntityArray" minOccurs="0" />
                <element name="name" type="xsd:string" minOccurs="0" />
                <element name="description" type="xsd:string" minOccurs="0" />
                <element name="short_description" type="xsd:string" minOccurs="0" />
                <element name="weight" type="xsd:string" minOccurs="0" />
                <element name="status" type="xsd:string" minOccurs="0" />
                <element name="url_key" type="xsd:string" minOccurs="0" />
                <element name="url_path" type="xsd:string" minOccurs="0" />
                <element name="visibility" type="xsd:string" minOccurs="0" />
                <element name="category_ids" type="typens:ArrayOfString" minOccurs="0" />
                <element name="website_ids" type="typens:ArrayOfString" minOccurs="0" />
                <element name="has_options" type="xsd:string" minOccurs="0" />
                <element name="gift_message_available" type="xsd:string" minOccurs="0" />
                <element name="price" type="xsd:string" minOccurs="0" />
                <element name="special_price" type="xsd:string" minOccurs="0" />
                <element name="special_from_date" type="xsd:string" minOccurs="0" />
                <element name="special_to_date" type="xsd:string" minOccurs="0" />
                <element name="tax_class_id" type="xsd:string" minOccurs="0" />
                <element name="tier_price" type="typens:ArrayOfString" minOccurs="0" />
                <element name="meta_title" type="xsd:string" minOccurs="0" />
                <element name="meta_keyword" type="xsd:string" minOccurs="0" />
                <element name="meta_description" type="xsd:string" minOccurs="0" />
                <element name="custom_design" type="xsd:string" minOccurs="0" />
                <element name="custom_layout_update" type="xsd:string" minOccurs="0" />
                <element name="options_container" type="xsd:string" minOccurs="0" />
                <element name="additional_attributes" type="typens:associativeArray" minOccurs="0" />
            </all>
        </complexType>
        <complexType name="catalogProductSuperAttributeEntity">
            <all>
                <element name="attribute_id" type="xsd:string" minOccurs="0"/>
                <element name="product_super_attribute_id" type="xsd:string" minOccurs="0"/>
                <element name="product_id" type="xsd:string" minOccurs="0"/>
                <element name="position" type="xsd:string" minOccurs="0"/>
                <element name="label" type="xsd:string" minOccurs="0"/>
                <element name="attribute_code" type="xsd:string" minOccurs="0"/>
                <element name="use_default" type="xsd:string" minOccurs="0"/>
                <element name="prices" type="xsd:string" minOccurs="0"/>
            </all>
        </complexType>
        <complexType name="catalogProductSuperAttributeEntityArray">
            <complexContent>
                <restriction base="soapenc:Array">
                    <attribute ref="soapenc:arrayType" wsdl:arrayType="typens:catalogProductSuperAttributeEntity[]"/>
                </restriction>
            </complexContent>
        </complexType>

catalogProductCreateEntity呼び出されたスーパー属性内に新しい要素を作成しました。その型は、どちらも上で定義しcatalogProductSuperAttributeEntityArrayた配列です。catalogProductSuperAttributeEntity石鹸サーバーを呼び出すときは、次のようにします...

            foreach($prodInfo->super_attributes as $super_att) {
                $sProdInfo['super_attributes'][] = array(
                    'attribute_id'=>$super_att->attribute_id,
                    'product_super_attribute_id'=>$super_att->product_super_attribute_id,
                    'product_id'=>$super_att->product_id,
                    'position'=>$super_att->position,
                    'label'=>$super_att->label,
                    'attribute_code'=>$super_att->attribute_code,
                    'use_default'=>$super_att->use_default,
                    'prices'=>12
                );
            }

すべての要素が取り込まれます。このように見えます...

[super_attributes] => Array
    (
        [0] => Array
            (
                [attribute_id] => 159
                [product_super_attribute_id] => 207
                [product_id] => 4659
                [position] => 0
                [label] => Shirt Size
                [attribute_code] => shirt_size
                [use_default] => 0
                [prices] => 12
            )

        [1] => Array
            (
                [attribute_id] => 70
                [product_super_attribute_id] => 208
                [product_id] => 4659
                [position] => 0
                [label] => Manufacturer
                [attribute_code] => manufacturer
                [use_default] => 0
                [prices] => 12
            )

    )

Mage_Catalog_Model_Product_Api_V2ここで、この新しい属性を処理するためにクラスも拡張しました。私の問題は、コードをステップ実行するときに、magento が配列内で 2 つの属性しか受信しないことです。

  1. 製品番号
  2. 位置

他のすべての属性は無視されます。サーバー側とクライアント側の SOAP キャッシュも空にしましたが、何も変わっていないようです。

4

1 に答える 1

0

理解した...

<element name="super_attributes" type="typens:catalogProductLinkEntityArray" minOccurs="0" />

私の新しく作成されたはずtypensです...

<element name="super_attributes" type="typens:catalogProductSuperAttributeEntityArray" minOccurs="0" />

複合型内catalogProductCreateEntity

于 2013-02-15T16:04:27.913 に答える