【问题标题】:Customize prestashop web service自定义 prestashop 网络服务
【发布时间】:2016-07-07 18:15:35
【问题描述】:

我想自定义 Prestashop 网络服务以供自己使用,但我不知道如何操作,也找不到任何教程。我有一个想要从网站检索数据的移动应用程序,但默认的网络服务没有用。

例如,我想要包含图片的类别列表(以一种语言表示),但似乎我应该调用两个不同的服务来分别检索类别和图像。

假设我想要一个 JSON 类别数组,其中一个类别是一个 JSON 对象,其中包含这些字段 {id,title,imageUrl},但似乎我应该使用一种方法获得 {id,title},然后我可以逐个获取图像另一种方法!

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

【问题讨论】:

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


    【解决方案1】:

    我来晚了,但是:

    Prestashop 版本要求:> 1.6

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

    第一

    在覆盖中:

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

      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())
          ),
          ),
      );
      

    那么

    进入你的管理标签:

    • 在性能方面:清除缓存
    • 在高级设置中 > Web 服务:激活一个 api 密钥并为此密钥设置 myClassForWs

    终于

    通过 url 访问您的网络服务:

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

    它会返回您的数据

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多