Magento — ресурс, который нельзя вызвать

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

Я решил это. Модуль был хорошо отформатирован (поскольку для этого я использовал хорошо известный генератор).

То, что я сделал, это:

  1. Отредактируйте созданный класс Helper_Data, чтобы расширить его с Mage_Core_Helper_Data вместо _Abstract .
  2. Обновите кэш (Управление кэшем) и обновите компиляцию (Инструменты> Компиляция).
  3. (Я не знаю, было ли это актуально) Я вошел в роль администратора для SOAP и снова сохранил роль.

Тогда это сработало: я смог достичь своей точки входа, используя mobile_api.salesearchcategories.

Комментарии:

1. в системе. в журнале есть эта ошибка: include(): неудачное открытие ‘MageWebserviceModelApi.php » для включения