您将修改后的WSDL文件放在API的哪里,以覆盖核心定义?


10

我们更新了标准WSDL定义,以支持sku_type和price_type的捆绑产品属性。我尝试将更新的WSDL和WSI文件放入中app/code/local/Mage/Catalog/etc/,但是Magento不会加载它们。我不想将它们留在核心区域,但这似乎是我可以让Magento找到它们的唯一地方。

有什么建议么?

Answers:


14

您也可以在本地文件夹中有wsdl定义。您需要做的是创建一个自定义模块。在您的自定义模块,您可以添加文件api.xmlwsdl.xmlwsi.xml里面etc的文件夹。

wsdl.xml构建实际的wsdl时,应考虑您的文件。Magento合并了所有wsdl.xml具有一个模块的所有文件(与api.xml和相同wsi.xml)。这些文件已合并,因此您不需要Mage_Catalog模型中的完整xml文件。您可以仅添加所需的片段,只需确保保持相同的路径即可。

这是一个简单的例子。在wsdl.xmlMage_Catalog有这一段代码:

<definitions...>
    <types>
        <schema ...>
            <complexType name="catalogProductEntity">
                <all>
                    <element name="product_id" type="xsd:string"/>
                    <element name="sku" type="xsd:string"/>
                    <element name="name" type="xsd:string"/>
                    <element name="set" type="xsd:string"/>
                    <element name="type" type="xsd:string"/>
                    <element name="category_ids" type="typens:ArrayOfString"/>
                    <element name="website_ids" type="typens:ArrayOfString"/>
                </all>
            </complexType>
        </schema>
    </types>
</definitions>

并且您想要向此类型添加其他字段,您在自定义模块的wsdl.xml文件中要做的就是:

    <definitions...>
        <types>
            <schema ...>
                <complexType name="catalogProductEntity">
                    <all>
                        <element name="custom_attribute" type="xsd:string"/>
                    </all>
                </complexType>
            </schema>
        </types>
    </definitions>

(添加我已替换为“ ...”的标签定义和架构的属性)。


感谢Marius,这很有意义。我将这些定义添加到我们的定制模块中,并将其添加到主WSDL定义中。我没有想到这些类似于布局和配置文件。魔法!
GregC

这真的很方便。
philwinkle 2014年

Marius,我想覆盖从bool到int的catalogProductAttributeSetAttributeAdd响应。但是现在它同时显示了两者。我怎么做?
Refilon 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.