THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour

Dans core\lib\Thelia\Action\Order.php, il y a :

....
    /**
     * Returns the session from the current request
     *
     * @return \Thelia\Core\HttpFoundation\Session\Session
     */
    protected function getSession()
    {
        return $this->requestStack->getCurrentRequest()->getSession();
    }
....

J'aimerais faire la même chose dans un service, mais je n'y arrive pas...

Quelqu'un aurait-il une piste ?

Merci d'avance

Offline


Je pense avoir trouvé comment faire !

ArtabanMarketplace\Config\config.xml

....
        <service id="ArtabanMarketplace.action.order_before_create" class="ArtabanMarketplace\Actions\OrderSeller">
            <argument type="service" id="request"/>
            <tag name="kernel.event_subscriber"/>
        </service>
....

ArtabanMarketplace\Actions\OrderSeller.php

....
use Thelia\Core\HttpFoundation\Request;
....
 /** @var Request $request */
    protected $request = null;

    public function __construct(Request $request) {
        $this->request = $request;
    }
....
    protected function getSession() {
        $session = $this->request->getSession();
        return $session;
    }
....

Offline


Bingo ! Ou presque. Depuis Thelia 2.3, il vaut mieux utiliser RequestStack :

  <service id="ArtabanMarketplace.action.order_before_create" class="ArtabanMarketplace\Actions\OrderSeller">
            <argument type="service" id="request_stack"/>
            <tag name="kernel.event_subscriber"/>
        </service>
....
use Thelia\Core\HttpFoundation\Request;
....
 /** @var RequestStack $request */
    protected $requestStack= null;

    public function __construct(RequestStack $requestStack) {
        $this->requestStack= $requestStack;
    }
....
    protected function getSession() {
        $session = $this->requestStack->getCurrentRequest()->getSession();
        return $session;
    }
...

OpenStudio Toulouse

Offline


Merci Roaster !

Il faut remplacer "use Symfony\Component\HttpFoundation\Request;" par "use Symfony\Component\HttpFoundation\RequestStack;" dans l'exemple ;-)