I've tested your for WS-I compliance disabled and here are the results.
The wsdl is correct and it (almost) works.
First change this in your config.xml
.
<helpers>
<syncreports>
<class>Mycompany_Syncreports_Helper</class>
</syncreports>
</helpers>
To this:
<helpers>
<mycompany_syncreports>
<class>Mycompany_Syncreports_Helper</class>
</mycompany_syncreports>
</helpers>
Next: I see that in your api.xml
you declared only an info
method, but in the wsdl
you have 2 other methods syncreportsSyncCreate
, syncreportsSyncCreate
.
Add those methods to api.xml
otherwise you will get an invalid path error message.
<methods>
<info translate="title" module="mycompany_syncreports">
<title>Retrieve synchronization info</title>
<acl>syncreports/sync/info</acl>
<method>info</method>
</info>
<create translate="title" module="mycompany_syncreports">
<title>Create synchronization</title>
<acl>syncreports/sync/create</acl>
<method>create</method>
</create>
<items translate="title" module="mycompany_syncreports">
<title>List items</title>
<acl>syncreports/sync/list</acl>
<method>items</method>
</items>
</methods>
Also add the methods to your api model (v2 also if needed).
Now it seams to work.
This is what I send:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento">
<soapenv:Header/>
<soapenv:Body>
<urn:syncreportsSyncCreate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sessionId xsi:type="xsd:string">SESSION KEY HERE</sessionId>
</urn:syncreportsSyncCreate>
</soapenv:Body>
</soapenv:Envelope>
This is what I get.
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:syncreportsSyncCreateResponse>
<result xsi:type="xsd:string">This is the message:</result>
</ns1:syncreportsSyncCreateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
So I guess the method works.
When I enable the WS-I compliance I don't get any result from any call. Not even from login
. If I find something I will edit the answer. But you can at least test for WS-I compliance off.
[Edit]
I think I found the issue with your wsi
file also.
You have declared the type syncreportsSyncItemsResponse
twice and the declaration for syncreportsSyncCreateResponse
is missing. I assume it was a copy/paste/replace error (you forgot the replace).
Change this:
<wsdl:message name="syncreportsSyncItemsResponse">
<wsdl:part name="parameters" element="typens:syncreportsSyncCreateResponseParam" />
</wsdl:message>
To this:
<wsdl:message name="syncreportsSyncCreateResponse">
<wsdl:part name="parameters" element="typens:syncreportsSyncCreateResponseParam" />
</wsdl:message>
A side note...you may also want to change the definition of <xsd:element name="syncreportsSyncCreateResponseParam">
to fit in with the response type of the method. Now you declare that you return an array
, but in the end I assume you will return a boolean
or a string.
Look in the table eav_attribute
for a record with backend_model = 'scena/catalog_attribute_backend_cimage'
and delete the row.
Clear the cache when you are done.
[EDIT]
I took a look through the extension code.
To completely uninstall the extension you need to remove the tables zitec_branding_store
and zitec_branding
. and remove the extension from the core_resource
table` with
DELETE FROM `core_resource` WHERE `code` = 'zitec_branding_setup';
The extension does not add any product or category attributes. My hunch is that you have an other extension that is responsible for this error.
I see that you have an extension called BL_CustomGrid
that has an eval
in it. Never use extensions that have eval
in their php code. Even if they might work, they are very dangerous.
Best Answer
If you're using the SOAP Api try this:
<Mage_Catalog/>
as dependencyThen add an api config file for overwrite the "category" complex types definitions:
And add this contents:
This is the full list of all category related nodes/actions so add your attribute to any of them. (I just added it to catalogCategoryEntity)
NOTES
ice_cat_id
insteadIceCatID
you can still using "IceCatID" for label.<complex type>
nodes in your wsdl file.EDIT: About WSDL Definition in Magento To clarify some concept:
We are using the WSDL Configuration to update
<complexType>
definitions. Every<complexType>
node defines a data type that isn't standard (like 'int')Every SOAP call has it own definition, if you make a call to catalogCategoryInfo: you will get a response body with a node called 'info' as defined here:
This Service definition is telling us that requests to catalogCategoryInfo will give us a node called "info" of the catalogCategoryInfo type. This means that if you need your custom attribute for that call (catalogCategoryInfo) you have to add your attribute to the type definition (in your module wsdl.xml file):
Looking at the
app/code/core/Mage/Catalog/etc/wsdl.xml
file you will find which<compleType>
definition node must edit for each message (When I say "add your attribute to every needed node" means that). So the workaround to do it would be something like that:app/code/core/Mage/Catalog/etc/wsdl.xml
app/code/{pool}/{vendor}/{module}/etc/wsdl.xml
file to overwrite the definition (adding our custom attribute(s) there).Note that the same workaround could be used if you want to remove some unused attributes to perform fastest requests.
EDIT 2: Missing Attributes for some methods
I forgot to mention that for some API methods the WSDL definition rewrite isn't enough. these methods are:
catalogCategoryTree
catalogCategoryLevel
In both cases the category data is actually loaded by collection so you need to rewrite these methods in order to get your custom attribute available in the response.
First we have to overwrite the
Mage_Catalog_Model_Category_Api::tree
method:Then we need to modify the
Mage_Catalog_Model_Category_Api::_nodeToArray
method too since return data is hardcoded:We need to modify the
Mage_Catalog_Model_Category_Api::level
Alternatively you can overwrite hook the event
catalog_category_collection_save_after
and add your attribute by default every time the collection is loaded but you will still need to change the_nodeToArray()
andlevel
methods.