#soap #magento-1.6
#soap #magento-1.6
Вопрос:
Контекст
Я много раз пытался создать модуль Magento, предоставляющий набор пользовательских методов.
Я использую Magento 1.6.2 и следовал многим руководствам, но моей последней попыткой было использование этой веб-утилиты — Magento Module Creator.
В конфигурации модуля я попытался использовать: Milyuncarros (как пространство имен) и Mobile (как модуль). Другие вещи, такие как codePool и version, оставлены в качестве значений по умолчанию (local, 0.1.0).
В опции «Нужно добавить Magento API» и добавлен один метод: saleSearchCategories
.
Сам сайт сообщает о вызове методов soap, таких как: yourmodulename_api.yourmethod (в моем случае это будет Mobile_Api.saleSearchCategories или mobile_api.salesearchcategories — есть проблемы с обоими: «Недопустимый путь API» и «Путь к ресурсу не вызывается» соответственно).
Управление кэшем для модулей отключено, и я убедился, что модуль Milyuncarros_Mobile включен.
Я также явно включил, после многих попыток, «RewriteEngine On» в appache .htaccess в корне Magento (т. Е. Как родной брат /apps
).
Проблема
Когда я пытаюсь вызвать созданный мной метод soap (без параметров) Я получаю SoapFault с «Путь к ресурсу не вызывается».
Текущее состояние
Сгенерированная файловая структура выглядит следующим образом:
app/etc/modules/Milyuncarros_Mobile.xml (автоматически генерируется):
<?xml version="1.0"?>
<config>
<modules>
<Milyuncarros_Mobile>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Api />
</depends>
<version>0.1.0</version>
</Milyuncarros_Mobile>
</modules>
</config>
app/code/local/Milyuncarros/Mobile/Model/Api.php (Автоматически сгенерированный Отредактированный):
<?php
class Milyuncarros_Mobile_Model_Api extends Mage_Api_Model_Resource_Abstract
{
public function saleSearchCategories()
{
//everything was generated but the following line
return array('active' => true);
}
}
app/code/local/Milyuncarros/Mobile/Helper/Data.php (Автоматически генерируется):
<?php
class Milyuncarros_Mobile_Helper_Data extends Mage_Core_Helper_Abstract
{
}
app/code/local/Milyuncarros/Mobile/etc/api.xml (Автоматически генерируется):
<?xml version="1.0"?>
<config>
<api>
<resources>
<mobile_api translate="title" module="mobile">
<title>Myapi</title>
<acl>mobile/api</acl>
<model>mobile/api</model>
<methods>
<salesearchcategories translate="title" module="mobile">
<title>Categories listed as public sale searchable</title>
<acl>mobile/salesearchcategories</acl>
</salesearchcategories>
</methods>
</mobile_api>
</resources>
<acl>
<resources>
<mobile translate="title" module="mobile">
<title>Mobile</title>
<sort_order>2000</sort_order>
<salesearchcategories translate="title" module="mobile">
<title>Categories listed as public sale searchable</title>
</salesearchcategories>
</mobile>
</resources>
</acl>
</api>
</config>
(Я пробовал mobile_api
. salesearchcategories
на основе этой спецификации).
И, наконец, — но не менее важно — файл конфигурации модуля: app/code/local/Milyuncarros/Mobile/etc/config.xml (Автоматически генерируется):
<?xml version="1.0"?>
<config>
<modules>
<Milyuncarros_Mobile>
<version>0.1.0</version>
</Milyuncarros_Mobile>
</modules>
<global>
<helpers>
<mobile>
<class>Milyuncarros_Mobile_Helper</class>
</mobile>
</helpers>
<models>
<mobile>
<class>Milyuncarros_Mobile_Model</class>
<resourceModel>mobile_mysql4</resourceModel>
</mobile>
</models>
</global>
</config>
Вопрос: Когда я пытаюсь вызвать mobile_api.salesearchcategories, я получаю сообщение об ошибке:
SoapFault: путь к ресурсу не вызывается.
Что я должен сделать, чтобы перестать получать эту ошибку? В документации мало что говорится (или это слишком сложно для поиска, и я его не нашел).
Ответ №1:
Я решил это. Модуль был хорошо отформатирован (поскольку для этого я использовал хорошо известный генератор).
То, что я сделал, это:
- Отредактируйте созданный класс Helper_Data, чтобы расширить его с Mage_Core_Helper_Data вместо _Abstract .
- Обновите кэш (Управление кэшем) и обновите компиляцию (Инструменты> Компиляция).
- (Я не знаю, было ли это актуально) Я вошел в роль администратора для SOAP и снова сохранил роль.
Тогда это сработало: я смог достичь своей точки входа, используя mobile_api.salesearchcategories.
Комментарии:
1. в системе. в журнале есть эта ошибка: include(): неудачное открытие ‘MageWebserviceModelApi.php » для включения