Nous allons voir comment ajouter un nouvel objet personnalisé dans l’api Prestashop via un module.
Cette méthodologie fonctionne sous Prestashop 1.7
L’objectif est d’ajouter de rendre un nouvel objet « Sample » qui pourra être manipulé via l’api.
Pour cela nous allons créer un module hhapisample
Ce module va ajouter une entité « sample » qui sera gérable via l’API.
Cette entité aura uniquement les paramètres suivants :
- référence
- nom ( multilingue )
- description ( multilingue )
Voici le code de cette entité à placer dans le fichier classes/Sample.php du module.
/** * Classe d'exemple pour le webservice */ class Sample extends ObjectModel { /** @var string Référence du document */ public $reference; /** @var string nom */ public $name; /** @var string description */ public $description; /** * Définition des paramètres de la classe */ public static $definition = array( 'table' => 'sample', 'primary' => 'id_sample', 'multilang' => true, 'multilang_shop' => false, 'fields' => array( 'reference' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml', 'size' => 255), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml', 'size' => 255 , 'lang' => true), 'description' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml' , 'lang' => true), ), ); /** * Mapping de la classe avec le webservice * * @var type */ protected $webserviceParameters = [ 'objectsNodeName' => 'samples', //objectsNodeName doit être la valeur déclarée dans le hookAddWebserviceResources ( liste des entités ) 'objectNodeName' => 'sample', // Détail d'une entité 'fields' => [] ]; } |
La définition du webservice est géré dans l’objet est configuré dans la variable $webserviceParameters
Pour rendre disponible cette entité, il faut greffer votre module sur le hook addWebserviceResources
/** * Ajout de la nouvelle entité au webservice * @param $params * @return array */ public function hookAddWebserviceResources($params) { return [ 'samples' => [ //Nom du paramètre $webserviceParameters['objectsNodeName'] de la classe Objet 'description' => 'Sample new entity for API', 'class' => 'Sample' ], ]; } |
Une fois le module installé, vous pouvez-voir dans la liste des objets de l’api que l’entité sample est bien visible.…