Di mana Anda meletakkan file WSDL yang dimodifikasi untuk API untuk menimpa definisi inti?

10

Kami telah memperbarui definisi WSDL standar untuk mendukung atribut produk yang dibundel untuk sku_type dan price_type. Saya sudah mencoba memasukkan file WSDL dan WSI yang diperbarui app/code/local/Mage/Catalog/etc/, tetapi Magento tidak memuatnya. Saya tidak ingin meninggalkan mereka di area inti, tapi itu sepertinya satu-satunya tempat saya bisa mendapatkan Magento untuk menemukan mereka.

Ada saran?

GregC
sumber

Jawaban:

14

Anda dapat memiliki definisi wsdl di folder lokal juga. Yang perlu Anda lakukan adalah membuat modul khusus. Dalam modul khusus Anda, Anda dapat menambahkan file api.xml, wsdl.xmldan wsi.xmldi dalam etcfolder.

wsdl.xmlFile Anda harus dipertimbangkan ketika membangun wsdl yang sebenarnya. Magento menggabungkan semua wsdl.xmlfile dari semua modul yang memiliki satu (berlaku untuk api.xmldan wsi.xml). File-file ini digabungkan, jadi Anda tidak perlu file xml lengkap dari Mage_Catalogmodel. Anda dapat menambahkan hanya potongan yang Anda butuhkan, pastikan Anda tetap di jalur yang sama.

Ini adalah contoh sederhana. Dalam wsdl.xmldari Mage_Catalogada potongan kode ini:

<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>

Dan Anda ingin menambahkan bidang lain ke jenis ini, yang harus Anda lakukan di file wsdl.xml dari modul khusus Anda adalah ini:

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

(tambahkan atribut untuk definisi dan skema tag yang telah saya ganti dengan '...').

Marius
sumber
Terima kasih Marius, itu masuk akal. Saya akan menambahkan definisi ini ke modul khusus kami dan menambahkannya ke definisi master WSDL. Saya tidak berpikir ini mirip dengan tata letak dan file konfigurasi. Sihir!
GregC
Ini sangat berguna.
philwinkle
Marius, saya ingin menimpa katalogProdukAttributeSetAttributeTambahkan respons dari bool ke int. Tapi sekarang sudah menunjukkan keduanya. Bagaimana aku melakukan itu?
Refilon