自定义prestashop Web服务

时间:2015-08-20 13:46:32

标签: json web-services rest crud prestashop-1.6

我想根据自己的用途自定义Prestashop网络服务,但我不知道如何找到任何教程。我有一个想要从网站检索数据的移动应用程序,但默认的Web服务是无用的。

例如,我希望用他们的图片列出类别(用语言),但似乎我应该调用两种不同的服务来分别检索类别和图像。

假设我想拥有一个类别的JSON数组,类别是一个JSON对象,其中包含这些字段Port = 587但似乎我应该使用方法得到{id,title,imageUrl},之后我可以得到图像一个接一个的方法!

我无法在文档中找到任何有关扩展或自定义Web服务的指南。

1 个答案:

答案 0 :(得分:0)

我有点迟了但是:

Prestashop版本需求:> 1.6

如果要自定义Web服务并返回具有JSON格式输出的特定字段。你需要这样做:

<强>第一

覆盖:

  • 创建一个类 myClassForWs ,扩展 myClassCore
  • webservice / WebserviceRequest.php
  • 中覆盖 WebserviceRequest
  • webservice / WebserviceRequest.php 中:将myClassForWs添加到 ressources:

    public static function getResources()
    {
        $resources = parent::getResources();
        $resources['myClassForWs'] = array('description' => 'The class','class' => 'myClassForWs');
        ksort($resources);
        return $resources;
    }
    

    }

  • myClassForWs 中:使用您需要的字段重新定义$ webserviceParameters和$ definition:

    protected $definition = array(
        'table' => 'category',
        'primary' => 'id_category',
        'multilang' => true,
        'multilang_shop' => true,
        'fields' => array(
            'name' =>array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
            'link_rewrite' =>array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
            'description' =>array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
        ),
    );
    
    protected $webserviceParameters = array(
        'objectsNodeName' =>'categories',
        'hidden_fields'=>array('nleft', 'nright', 'groupBox'),
        'fields' => array(
            'level_depth' => array('setter' => false),
        ),
        'associations' => array(
            'images' => array(
            'resource' => 'image',
            'fields' => array('id' => array())
        ),
        ),
    );
    

,然后

进入您的管理标签:

  • 在效果方面:清除缓存
  • 在高级设置中&gt; Web服务:激活api密钥并为此密钥设置 myClassForWs

<强>最后

使用网址访问您的网络服务:

my.prestashop/api/myClassForWs/{id_class}?output_format=**JSON**

它会返回您的数据

我希望它有所帮助。