**Ceci est une ancienne révision du document !**
DoliMobile - Back (PHP)
La partie backoffice de dolimobile doit s'intégrer dans un module normal de dolibarr.
De ce fait lorsque vous déployez dolimobile dans votre module dolibarr vous aurez quelques nouveaux dossiers qui vont apparaître:
mobile
: dossier qui contiendra tout le code source de la partie mobile (front en React, voir plus loin)pwa
: le dossier dans lequel sera copié le contenu de l'application mobile “compilée” ainsi que le point d'entréeapi.php
smartmaker-api
: le dossier dans lequel vous devrez stocker les controleurs et mappeurs php de vos objets qui seront accessible via le routeur api.php présent dans le dossierpwa
Ainsi qu'un fichier smartmaker-api-prepend.php
qui est utilisé pour factoriser du code et éviter d'avoir des entêtes php trop verbeux.
Mapping dolibarr <-> application react
Les objets dolibarr ne peuvent pas être directement transposés en react nous avons donc développé un système de “mapping” qui permet de faire correspondre des objets dolibarr avec leur équivalent react.
Chaque classe dolibarr qui a besoin d'être mappée peut l'être via un ensemble de techniques fines dont vous trouverez le détail ci dessous.
Exemple pour l'objet dolibarr Societe vous trouverez une classe dmSociete dans le projet smartAuth.
Si votre module apporte un objet SmartInter par exemple vous pourrez mapper ses champs vers react en implémentant un fichier dmSmartInter tout simplement.
Plus de détails sur le moteur de mapping dolibarr - react
Fichier api.php
C'est dans ce fichier que vous aurez à implémenter les différents points d'entrée sur l'API dédiée à votre application.
Le routeur PHP
Ce routeur php comprends la grammaire suivante:
- Route::action
- action pouvant être get post ou put (delete n'est pas encore implémenté)
- le 1er argument de la fonction est le nom du point d'entrée que vous voulez sur votre api, ainsi
Route::get('login'…
correspond à la requête httpGET /login
- l'argument suivant donne le nom de la classe PHP qui soit être sollicitée
- le suivant contient le nom de la fonction à utiliser dans cette classe PHP
- le dernier indique s'il s'agit d'une route pour laquelle il faut être authentifié ou pas
Grâce à ce routeur PHP il devient extrêmement facile de “suivre” les différentes actions possibles sur votre API !
Par exemple un GET /login
appelle la fonction index
de la classe AuthController
et un POST /login
appelle la fonction login
de cette même classe …
Route::get('login', AuthController::class, 'index'); Route::post('login', AuthController::class, 'login');
Vous voulez implémenter un “logout” ? rien de plus simple: ajoutez une ligne dans api.php
Route::post('logout', AuthController::class, 'logout', true);
Et implémentez la fonction logout
dans votre classe AuthController
…
/** * @api {post} /logout Logout * @apiDescription Logout and close session * @apiName PostLogout * @apiGroup Auth * */ public function logout($payload) {
Note: cette fonction est naturellement déjà implémentée nativement dans DoliMobile