Intégration de Magento et Symfony2

Ayant à réaliser une boutique plutôt complexe, mais n’étant pas spécialistes du développement Magento, nous avons voulu tester l’association de Symfony2 en front end et Magento en back end.

L’intégration de ces deux systèmes est intéressante à plus d’un titre. Vous souhaitez afficher une liste de produits stockés dans une boutique Magento ? Récupérer des commandes pour les traiter dans un ERP réalisé avec Symfony2 ? Ou pourquoi pas développer une boutique entière en vous concentrant uniquement sur la logique ?

Nous allons voir ici comment utiliser l’API de Magento depuis Symfony2 : à distance en utilisant le web service, ou en local en faisant directement appel au noyau Magento.

Le web service SOAP / XML-RPC

A distance, le seul moyen d’échanger des données entre la boutique et un autre site est de passer par le web service. Son activation et ses possibilités sont très bien décrites dans la documentation officielle et sur Wikigento.

L’utilisation de base dans un controller ressemblerait au morceau de code suivant. Évidemment, dans l’idéal il faudrait créer un service pour ne pas avoir à se répéter d’une action à l’autre, et mettre en place un système de cache.


Le noyau Magento « Mage »

Si Magento et Symfony2 sont sur le même serveur, le plus efficace reste encore l’utilisation directe du noyau. L’équipe Liip a réalisé un bundle permettant d’instancier le coeur de Magento et donc d’utiliser ses méthodes internes. Le LiipMagentoBundle permet (à l’heure actuelle) :

  • la connexion des utilisateurs Magento dans Symfony2
  • le partage des sessions utilisateurs
  • l’accès au contenu et même aux blocks Magento

Une fois le bundle en place, l’application Symfony2 aura accès à toutes les données et méthodes du noyau Magento : création/édition/suppression de clients, produits et commandes, gestion du panier et des factures par Magento, l’accès au différents modes de livraison et de paiement…

Exemple 1 : Affichage d’un block Magento

Voir la documentation du LiipMagentoBundle.

Exemple 2 : Récupération de données Magento


Conclusion

Au final, l’intégration des deux systèmes est relativement aisée. Si le web service est indispensable pour faire communiquer des sites distants, l’intérêt de son utilisation en local est plus limité : relativement lent, il ne donne pas accès à toutes les fonctions que l’on peut attendre (pour le moment).

L’utilisation du noyau Magento à travers le LiipMagentoBundle pallie à ces limitations : vitesse d’exécution, partage de sessions, accès à toutes les méthodes existantes… Il ne reste plus qu’à s’occuper de la logique et de la présentation.

L’association Magento/Symfony2 semble très intéressante pour la mise en place d’une boutique rapide, si vous avez des retours d’expérience n’hésitez pas à nous en faire part. Nous ne manquerons pas d’en discuter si nous réalisons un site de cette façon.

Partagez cet article