2015-12-07 4 views
6

Ich habe 2.8 von 2.7.7 auf symfony aktualisiert und ich bekomme diese deprecation:Symfony 2.8: isScopeActive deprecation nach Update auf 2.8.0 von 2.7.7

Die Symfony \ Component \ Dependency Injection \ Container: : isScopeActive Methode ist seit Version 2.8 veraltet und wird in 3.0 entfernt.

Ich benutze diesen Anruf in einem Zweig Erweiterungsklasse:

class TemplateHelper extends \Twig_Extension { 

    private $request; 

    private $container; 


    /** 
    * constructor 
    * @param ContainerInterface $container 
    */ 
    public function __construct(ContainerInterface $container){ 
     $this->container = $container; 

     if($this->container->isScopeActive('request')){ 
      $this->request = $this->container->get('request'); 
     } 
    } 
    //...functions 
    } 

Zunächst löschen i die isScopeActive zu überprüfen, aber ich erhalte eine Ausnahme, wenn ich den symfony-Cache klar laufen:

[ Symfony \ Component \ DependencyInjection \ Exception \ InactiveScopeException] Sie können keinen Service ("Request") eines inaktiven Scopes ("request") erstellen.

Gibt es eine Möglichkeit, die isScopeActive-Prüfung zu ersetzen?

Dank ...

Antwort

8

einfach request_stack statt request injizieren und getCurrentRequest() nennen.

+0

Ist dies eine like-for-like-Ersetzung, d. H. '$ This-> container-> isScopeActive ('request')' ersetzt durch '$ requestStack-> getCurrentRequest()'? – crmpicco