THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je suis actuellement en train de développer un petit site avec Thelia. Et je souhaiterai le faire connecter à ma propre API que je compte développer dans un module.

Pour cela, j'ai besoin de récupérer, pour chaque clients, les orders qui lui sont attribués. L'API de Thelia ne m'avance pas concernant l'accès aux données, et (étant sur Symfony 3 habituellement) je ne trouve pas comment accéder à des méthodes simples pour récupérer une simple liste de data (ex : le QueryBuilder de Doctrine qui n'existe pas sur Thelia? ).

Comment faire pour accéder aux entités et en récupérer des données, sachant que même les entités me paraissent floues (abstract class & dossiers différents, welcome) ?

Merci d'avance!

Offline


Thelia utilise Propel, et pas Doctrine. Pour récupérer la liste des commandes payées d'un client, en les classant par ordre de date de commande inverse, tu vas utiliser :

$orders = OrderQuery::create()
    ->filterByCustomerId($customerId)
    ->filterByOrderStatus(
        [
            OrderStatusQuery::getPaidStatus(),
            OrderStatusQuery::getProcessingStatus(),
            OrderStatusQuery::getSentStatus(),
        ],
        Criteria::IN
    )
    ->orderByCreatedAt(Criteria::DESC);

/** @var Order $order */
foreach($orders as $order) {
    // Process order
    ...
}

OpenStudio Toulouse

Offline


Merci pour la réponse! C'est un peu plus clair dans ma tête et dans mon code. smile

J'aimerai savoir, n'ayant pas d'informations là-dessus : je viens de créer un event listener pour récupérer finalement l'order directement à la commande :
- il est connecté par cette fonction (je me suis inspiré du module "ExtraOrderData" :
public static function getSubscribedEvents()
    {
        return [
            TheliaEvents::ORDER_PAY => ['orderCreate', 128]
        ];
    }

Est-ce le bon event pour récupérer après le payement l'order?

Comment récupérer les informations de l'order en cours?

Et, le plus important en ce moment, un petit var_dump ne fonctionne pas. Jamais jamais jamais. J'arrive pas a comprendre pour quelle raison. Est-ce possible de debug autrement sur Thelia?

Merci encore pour votre réponse précédente,

SephiL1nk

Offline


Pour voir les echo, var_dump et autres print_r, travaille en mode développement : http://thelia.net/forum/viewtopic.php?id=11787

ORDER_PAY est envoyé avant le paiement. Si tu veux récupérer la commande au moment où elle a été payée, utilise ORDER_UPDATE_STATUS, avec une priorité basse (10) pour passer après tous les autres traitements éventuels :

public static function getSubscribedEvents()
    {
        return [
            TheliaEvents::ORDER_UPDATE_STATUS => ['orderCreate', 10]
        ];
    }

Tu récupère la commande dans la méthode orderCreate :

public function orderCreate(OrderEvent $event)
{
    $order = $event->getOrder();

    if ($order->idPaid(true)) {
       ...
    }
}

OpenStudio Toulouse

Offline


Merci! J'avance de plus en plus big_smile

Je n'arrive cependant pas à afficher les var_dump et autre. Il faut vider le cache quand on a fait les changements dans le index_dev.php? J'ai rajouté mon IP (localhost, c'pas trop complexe) et il ne me fait aucune erreur, mais elle ne s'affiche pas du tout sur aucune des pages du site... ça pose quand même problème. smile

Offline


En fin de compte, après une bonne journée à tester pourquoi la debug toolbar ne fonctionne pas sur Thelia 2.3.3, il semblerait qu'elle ne soit pas encore implémentée dans le projet? Le module réalisé dans les modules Thelia correspond à une version 1 du projet, et fais entièrement planter mon application sur la version 2.3.3...

Est-ce normal? Aucun moyen n'existe pour débug efficacement notre code?

Offline


Pour débugger, le plus simple est d'utiliser XDebug, avec un IDE qui le supporte, comme PhpStorm, Eclipse, NetBeans et d'autres.

La DebugBar de Symfony n'est pas implémentée dans Thelia. Un module propose un début d'implémentation : https://github.com/thelia-modules/TheliaDebugBar


OpenStudio Toulouse