PrestaShop:无法通过网络服务访问新添加的资源
PrestaShop: Can't access newly added resource through webservice
我在 phpMyAdmin 的 Prestashop 数据库中创建了用户 table,table 的模式是:
CREATE TABLE users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
我想像其他资源一样将此 table 添加到我的网络服务资源列表中,并从另一个应用程序访问该资源。
为此,我到目前为止完成了以下任务:
我创建了/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();
}
结果我在网络服务资源列表中找到了table。但是当我点击 URL 时:example.com/api/users
没有返回 XML 数据。
我在谷歌上搜索了很多问题,但没有找到任何有效的解决方案:如何在网络服务资源中添加新数据库 table users
并使用 [=15 访问资源=] URL.
全部正确,但只有少量更正:
table 必须在安装时选择前缀(默认为 ps_
):
CREATE TABLE ps_users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
第 1 点没问题 ;)
第 2 点,不要忘记将 table 字段添加为 public 变量,否则 XML 将不会显示存储在数据库中的信息:
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
.
我在 phpMyAdmin 的 Prestashop 数据库中创建了用户 table,table 的模式是:
CREATE TABLE users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
我想像其他资源一样将此 table 添加到我的网络服务资源列表中,并从另一个应用程序访问该资源。
为此,我到目前为止完成了以下任务:
我创建了
/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(); }
结果我在网络服务资源列表中找到了table。但是当我点击 URL 时:example.com/api/users
没有返回 XML 数据。
我在谷歌上搜索了很多问题,但没有找到任何有效的解决方案:如何在网络服务资源中添加新数据库 table users
并使用 [=15 访问资源=] URL.
全部正确,但只有少量更正:
table 必须在安装时选择前缀(默认为 ps_
):
CREATE TABLE ps_users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
第 1 点没问题 ;)
第 2 点,不要忘记将 table 字段添加为 public 变量,否则 XML 将不会显示存储在数据库中的信息:
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
.