PrestaShop:无法通过webservice访问新添加的资源

时间:2016-08-30 09:45:16

标签: php web-services module prestashop prestashop-1.6

我在phpMyAdmin中的Prestashop数据库中创建了用户表,该表的架构是:

CREATE TABLE users (
 id int NOT NULL AUTO_INCREMENT,
 Token int NOT NULL,
 PRIMARY KEY (id),
 UNIQUE KEY (Token)
);

我想在我的webservice资源列表中添加此表,就像其他资源一样,并从另一个应用程序访问该资源。

为此,我到目前为止完成了以下任务:

  1. 我创建了/prestashop/mymodule/override/classes/webservice/ WebserviceRequest.php

    class WebserviceRequest extends WebserviceRequestCore {
        public static function getResources(){
            $resources = parent::getResources();
            $resources['users'] = array('description' => 'Device registration', 'class' => 'Users');
            ksort($resources);
            return $resources;
        }
    }
    
  2. /prestashop/mymodule/override/classes/Users.php

    class Users extends ObjectModel {
        public static $definition = array(
            'table' => 'users',
            'primary' => 'id',
            'fields' => array(
                'Token' => array('type' => self::TYPE_INT)
            )
         );
        protected $webserviceParameters = array();
     }
    
  3. 结果我在webservice资源列表中找到了该表。但是当我点击URL时:example.com/api/users没有返回XML数据。

    我已经搜索了很多问题,但没有找到任何有效的解决方案:如何在Web服务资源中添加新的数据库表users并使用example.com/api/users URL访问资源。

1 个答案:

答案 0 :(得分:0)

所有正确但只有很小的修正:

表必须在安装期间选择前缀(默认为ps_):

CREATE TABLE ps_users (
 id int NOT NULL AUTO_INCREMENT,
 Token int NOT NULL,
 PRIMARY KEY (id),
 UNIQUE KEY (Token)
);

第1点没问题;)

第2点,不要忘记将表字段添加为public var,否则XML将不会显示存储在db中的信息:

class UsersAPI extends ObjectModel {
    public $Token;

    public static $definition = array(
        'table' => 'users',
        'primary' => 'id',
        'fields' => array(
            'Token' => array('type' => self::TYPE_INT)
        )
    );
    protected $webserviceParameters = array();
}

修改 如果您进行了覆盖,请不要忘记删除prestashop/cache/class_index.php