2012-07-10 8 views
18

cada vez que intento borrar la caché de la consola me sale el siguiente error:Symfony 2 - No se puede borrar la memoria caché - Usted no puede crear un servicio ("solicitud") de un alcance inactiva ("solicitud")

[Symfony\Component\DependencyInjection\Exception\InactiveScopeException] 
    You cannot create a service ("request") of an inactive scope ("request"). 

¿Alguien ha experimentado esto antes? Gracias.

Editar: Muestra de código:

//accessing request object 
namespace Greg\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\DependencyInjection\ContainerInterface; 
use HvH\APIschemaBundle\Controller\Validation; 
use HvH\APIschemaBundle\Controller\Helpers; 

//FOSRestBundle 
use FOS\RestBundle\View\View; 

class TestController extends Controller 
{ 
    public function testAction(Request $request) 
    {      
     //get any query strings 
     $query_strings = $request->query->all(); 
     return($query_strings); 
    } 
} 

XML No está seguro de que el archivo está buscando ...

+0

Por favor, ¿puede especificar qué versión de Symfony2 está utilizando? – fsenart

+0

Gracias por la respuesta - Estoy usando 2.0.10 – greg

+0

Puede proporcionar muestra de la parte de su proyecto que utiliza el objeto Solicitud y el archivo xml que inyecta la Solicitud a su servicio. Hay algunos otros proyectos que han tenido errores similares y tal vez podemos proporcionarle una solución lista para usar dependiendo de su código. – fsenart

Respuesta

42

Por ejemplo, para crear manualmente alcance "solicitud" en la CLI puede sobrecargar el núcleo método initializeContainer en AppKernel clase, simplemente por hacer:

class AppKernel extends Kernel { 
    public function registerBundles() { 
     // ... 
    } 

    public function registerContainerConfiguration(LoaderInterface $loader) { 
     // ... 
    } 

    protected function initializeContainer() { 
     parent::initializeContainer(); 
     if (PHP_SAPI == 'cli') { 
      $this->getContainer()->enterScope('request'); 
      $this->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request'); 
     } 
    } 
} 
+0

¡Gracias por su respuesta! Además, si lo está utilizando en una función __construct(), puede poner el código allí, por lo que solo se usa en esa función – Gigala

+1

Lo tengo trabajando en mi comando. Solo necesito agregar estas dos líneas (..enterScope .. y establecer solicitud) al comienzo de la función de ejecución –

0

Intente ejecutar este rm -rf app/cache/* ... Este método es sólo el forma de eliminar Linux.

+1

Gracias por la respuesta, eso es lo que he estado haciendo. ¡Supongo que no hay inconveniente en hacer eso, pero no me gustan los errores al azar! – greg

+2

También estoy obteniendo este error con assetic: volcar, así que esto no es realmente una solución desafortunadamente. – greg

3

Se corrigió este problema al eliminar el objeto de solicitud en el constructor. Como la CLI no tiene cabeceras, no hay ningún objeto 'de solicitud' a menos que se haya creado manualmente.

+0

¿Hay un equivalente cuando está en modo CLI? Me refiero a una "solicitud de CLI" con argumentos, etc ... –

+0

Tendría que crear manualmente el objeto de solicitud – greg

+0

Esta respuesta me ayudó eliminando la solicitud del constructor –

0

Extender en 'respuesta s I' Шатов Максим hemos creado una solicitud a la raíz del sitio para que los filtros activos ramita Assetic (cssrewrite) serían capaces de resolver las URL de elementos:

0

llegué a esta pr Oblem, pero no estaba haciendo nada especial con las solicitudes en mis propios servicios: parecía que el error estaba relacionado con el servicio de solicitud en el núcleo de Symfony.

Lo resolví haciendo un composer install que no cambiaba los proveedores (ya estaba instalado) pero sí ejecutaba Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap como un efecto secundario y que parecía solucionar el problema.

Cuestiones relacionadas