Question

J'ai un service, ce qui nécessite d'obtenir des informations de la demande.

Je ne veux pas passer ces valeurs au service tout le temps, donc il est possible que le service reçoit des informations sur la demande et surtout les cookies en lui-même?

class SomeService {
    public function someMethod() {
        // access request and cookies, whithout passing in those values
    }
}
Était-ce utile?

La solution

inject le service request alors.

Vous avez sûrement une définition de service, modifier comme ceci:

<service id="my_service" class="SomeService" scope="request">
    <argument type="service" id="request" />
</service>

Ensuite, dans votre classe, créez une méthode __construct qui recevra l'objet de requête:

class SomeService 
{
    private $request;

    public function __construct(Request $request) {
        $this->request = $request;
    }

    public function someMethod() {
        $this->request->getSession();
    }
}

Autres conseils

Vous pouvez également, à partir de Symfony 2.4, vous pouvez facilement injecter le nouveau service de @request_stack.

De la docs :

Si vous essayez d'injecter le service de demande, la solution simple est d'injecter le service au lieu request_stack et accéder au courant Demande en appelant la méthode de getCurrentRequest() ( voir Pourquoi ne pas Injecter la demande service

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top