Фильтрация продуктов с помощью API Magento в Ruby on Rails с гемом Savon (SOAP) - PullRequest
3 голосов
/ 08 ноября 2011

Я использую этот код для моего приложения rails с API Magento.Все хорошо, кроме одной вещи, мне нужно отфильтровать продукты по аргументам API Magento, но я не знаю, как: (

Очевидно, что я тестировал с большим количеством решений (массив, хэш и т. Д.), Нонеудачно.

Pd: Извините, мой английский очень ограничен

Ссылки

Ответы [ 3 ]

3 голосов
/ 23 марта 2016

Пожилые годы заставили его работать с Savon - в Интернете нет реальных решений. Пошел и посмотрел на вызов SOAP и пропал: item

params = {:filter => {:item => {:key => "status", :value => "closed"}}}

result = client.call(:sales_order_list, message: { session_id: session_id, filters: params})

Это вернет только те заказы, которые имеют закрытый статус.

3 голосов
/ 28 февраля 2014

Я знаю, что уже очень поздно, но если кто-то еще найдет эту ветку, я создал гем magento_api_wrapper, который реализует фильтры для Magento SOAP API v2.Вы можете найти код здесь: https://github.com/harrisjb/magento_api_wrapper

Подводя итог, если вы хотите использовать один из простых фильтров Magento SOAP API, вы можете передать хеш с ключом и значением:

api = MagentoApiWrapper::Catalog.new(magento_url: "yourmagentostore.com/index.php", magento_username: "soap_api_username", magento_api_key: "userkey123")

api.product_list(simple_filters: [{key: "status", value: "processing"}, {key: created_at, value: "12/10/2013 12:00" }])

И чтобы использовать сложный фильтр, передайте хеш с ключом, оператором и значением:

api.product_list(complex_filters: [{key: "status", operator: "eq", value: ["processing", "completed"]}, {key: created_at, operator: "from", value: "12/10/2013" }])
1 голос
/ 08 июля 2014

Если вы ищете работу с Magento и Rails, Gemgento может быть тем, что вам нужно.Он заменяет внешний интерфейс Magento на RoR.

http://www.gemgento.com

После синхронизации с Magento вы можете использовать метод Gemgento::Product.filter вместе с некоторыми областями действия для простого поиска в структуре EAV Magento.

attribute = Gemgento::Attribute.find_by(code: 'color')
Gemgento::Product.filter({ attribute: attribute, value: 'red' })

Метод фильтра может принимать всевозможные комбинации массивов / хэшей

filters = [
   { attribute: [attribute1, attribute2], value: %w[red yellow black] },
   { attribute: size_attribute, value: 'L' }
]
Gemgento::Product.filter(filters)
...