I have created users table in Prestashop database in phpMyAdmin, the schema of that table is :
CREATE TABLE users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
I want to add this table in my webservice resource list as like other resources and access that resource from another application.
To do this I have done so far the following tasks:
I have created /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;
}
}
and /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();
}
As a result I found the table in webservice resource list. But when I hit the URL: example.com/api/users
no XML data is returned.
I have googled a lot for the problem but didn't find any effective solution for: How to add a new database table users
in webservice resources and access the resource using example.com/api/users
URL.
All correct but, only small corrections:
table must have the prefix choosed during installation (default is ps_
) :
CREATE TABLE ps_users (
id int NOT NULL AUTO_INCREMENT,
Token int NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY (Token)
);
Point 1 is ok ;)
Point 2, don't forget to add the table field(s) as public var otherwise the XML will not show the informations stored in the 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();
}
EDIT:
If you have made an override don't forget to delete the prestashop/cache/class_index.php
.