symfony2 example data create session symfony request locale symfony-2.1

session - example - ¿Detecta si se puede acceder al servicio de solicitud en Symfony 2?



symfony session lifetime (1)

Simplemente podría verificar si la instancia del contenedor actual tiene servicio / alcance de request usando ContainerInterface::has() / ContainerInterface::hasScope() .

EDITAR:

Mi error. ContainerInterface::isScopeActive() utilizar ContainerInterface::isScopeActive() para determinar si el servicio de request es completamente funcional:

public function __construct(ContainerInterface $container, RouterInterface $router) { if ($container->isScopeActive(''request'')) { $this->request = $container->get(''request''); $this->router = $router; } }

Este código cortado es de mi propio proyecto, donde he experimentado un problema muy similar.

La función getCurrentOrDefaultLocale() , definida en mi servicio, puede invocarse desde un controlador o mediante un script de línea de comandos.

Acceder al servicio de request desde CLI genera una excepción y la estoy usando para detectar la invocación de la CLI. Sin embargo, atrapar una excepción solo para este propósito me parece tan malo.

¿Hay alguna manera confiable de verificar si la solicitud es accesible en el contexto actual (de ejecución, navegador vs CLI)?

/** * @return string */ protected function getCurrentOrDefaultLocale() { try { $request = $this->container->get(''request''); } catch(InactiveScopeException $exception) { return $this->container->getParameter(''kernel.default_locale''); } // With Symfony < 2.1.0 current locale is stored in the session if(version_compare($this->sfVersion, ''2.1.0'', ''<'')) { return $this->container->get(''session'')->getLocale(); } // Symfony >= 2.1.0 current locale from the request return $request->getLocale(); }