我在phpMyAdmin中的Prestashop数据库中创建了用户表,该表的架构是:
CREATE TABLE users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
我想在我的webservice资源列表中添加此表,就像其他资源一样,并从另一个应用程序访问该资源。
为此,我到目前为止完成了以下任务:
我创建了/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;
}
}
和/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();
}
结果我在webservice资源列表中找到了该表。但是当我点击URL时:example.com/api/users
没有返回XML数据。
我已经搜索了很多问题,但没有找到任何有效的解决方案:如何在Web服务资源中添加新的数据库表users
并使用example.com/api/users
URL访问资源。
答案 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
。