THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Je fais des tests en vue de faire un module de Marketplace. Pour cela, je vais avoir besoin de modifier les commandes.
J'ai créé un module "TestModifCommande".
Dans thelia\local\modules\TestModifCommande\Config\config.xml, j'ai :

....
    <services>
            <service id="testmodifcommande.action.order" class="TestModifCommande\Actions\Order">
                <tag name="kernel.event_subscriber"/>
            </service>
    </services>
....

Dans thelia\local\modules\TestModifCommande\Actions\Order.php, j'ai :

<?php

/* * ********************************************************************************** */
/*      This file is part of the Thelia package.                                     */
/*                                                                                   */
/*      Copyright (c) OpenStudio                                                     */
/*      email : dev@thelia.net                                                       */
/*      web : http://www.thelia.net                                                  */
/*                                                                                   */
/*      For the full copyright and license information, please view the LICENSE.txt  */
/*      file that was distributed with this source code.                             */
/* * ********************************************************************************** */

namespace TestModifCommande\Actions;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\ActionEvent;

/**
 *
 * Class Order
 * @package TestModifCommande\Actions
 * @author Gilles Lengy <gilles.lengy@artaban.fr>
 */
class Order implements EventSubscriberInterface {

    /**
     */
    public function createOrder(ActionEvent $event) {
        
        var_dump($event);

        return null;
    }

    public static function getSubscribedEvents() {
        return array(
            "action.createOrder" => array("createOrder", 256),
        );
    }

}

J'espérais voir ce qu'il y a dans $event...
Mais je ne vois rien et les commandes sont créées normalement.

J'ai fait d'autres tests pour modifier le nom et le prénom sur l'adresse de livraison, mais j'ai voulu revenir à quelques choses de plus basique pour mieux comprendre ce qui se passe.

Une idée sur ce qui cloche ?

Offline

Offline


Non. Merci. Je vais voir.

Offline


Pas mieux...

Je ne suis pas sur de l'id dans la config du service

testmodifcommande.action.order

ni du nom de l'action

action.createOrder

Qu'en pensez-vous ?

Offline


L'identifiant de l'action n'a pas d'importance, tant qu'il reste unique.

Par contre, il faut utiliser les constantes pour les événements, dans ton cas ce serait TheliaEvents::ORDER_AFTER_CREATE


OpenStudio Toulouse

Offline


Je comprend pas trop ce qu'il faut faire de cette constante...

J'ai essayé
> thelia\local\modules\TestModifCommande\Actions\Order.php

...
    public static function getSubscribedEvents() {
        return array(
            "TheliaEvents::ORDER_AFTER_CREATE" => array("createOrder", 256),
        );
    }
...

Mais ça marche pô...

Il n'y a pas une doc là-dessus ?

Offline


With this code :

<?php

/* * ********************************************************************************** */
/*      This file is part of the Thelia package.                                     */
/*                                                                                   */
/*      Copyright (c) OpenStudio                                                     */
/*      email : dev@thelia.net                                                       */
/*      web : http://www.thelia.net                                                  */
/*                                                                                   */
/*      For the full copyright and license information, please view the LICENSE.txt  */
/*      file that was distributed with this source code.                             */
/* * ********************************************************************************** */

namespace TestModifCommande\Actions;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Core\Event\ActionEvent;
use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents;

/**
 *
 * Class Order
 * @package TestModifCommande\Actions
 * @author Gilles Lengy <gilles.lengy@artaban.fr>
 */
class Order implements EventSubscriberInterface {

    /**
     */
    public function createOrder(ActionEvent $event) {
        
        var_dump($event);

        return null;
    }

    public static function getSubscribedEvents() {
        return array(
            TheliaEvents::ORDER_AFTER_CREATE => array("createOrder", 256),
        );
    }

}

in thelia\local\modules\TestModifCommande\Actions\Order.php  , it works !!!

Maintenant, après avoir effectuer une commande, j'ai une page remplie d'infos et qui se rempli jusqu'à planter ! LOL !

Il faut falloir que fasse juste le traitement que je veux faire.