Prestashop 1.6 Веб-сервисы: как получить вложения продуктов? - PullRequest
0 голосов
/ 24 января 2020

http://doc.prestashop.com/display/PS16/Web+service+reference не содержит никаких «вложений» или «product_attachments» и т. Д. c. ресурс. Кроме того, я проверил, чтобы получить продукты благодаря соответствующему ресурсу, присутствующему в списке, , но продукты не содержат никакого идентификатора ссылки на вложения, nore объект attachments в формате JSON.

Так как же получить вложения продуктов? Возможно ли это хотя бы?

1 Ответ

1 голос
/ 25 января 2020

Нет или, по крайней мере, я смог его найти.

Вы можете добавить его, переопределив базовый класс Product.

  1. Добавить новый метод

    public function getWsProductAttachments()
    {
        $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(
            'SELECT pa.`id_attachment` AS id, a.file, a.file_name
            FROM `' . _DB_PREFIX_ . 'product_attachment` pa
            LEFT JOIN `' . _DB_PREFIX_ . 'attachment` a ON (a.id_attachment = pa.id_attachment)
            ' . Shop::addSqlAssociation('attachment', 'a') . '
            WHERE pa.`id_product` = ' . (int) $this->id
        );
    
        return $result;
    }
    
  2. Добавить следующий элемент в $webserviceParameters['associations'] свойство:

    'attachments' => array(
                'resource' => 'product',
                'api' => 'products',
                'getter' => 'getWsProductAttachments',
                'fields' => array(
                    'id' => array('required' => true),
                    'file' => array(),
                    'file_name' => array(),
                ),
            ),
    

Теперь ваш запрос products/{id} вернет что-то вроде

<attachments nodeType="product" api="products">
    <product>
    <id><![CDATA[1]]></id>
    <file><![CDATA[cc046998a333a9bffaa23ce292f2da43edb37065]]></file>
    <file_name><![CDATA[bbb.yml]]></file_name>
    </product>
    <product>
    <id><![CDATA[2]]></id>
    <file><![CDATA[b04566afd74cdaa54c921c8907c7efd489a2eec0]]></file>
    <file_name><![CDATA[aaa.csv]]></file_name>
    </product>
</attachments>

И вы можете загружать вложения вроде my.shop/download/cc046998a333a9bffaa23ce292f2da43edb37065

...