我的服务中定义的FunctiongetCurrentOrDefaultLocale()
可以从控制器或通过命令行脚本调用。
从 CLI访问request
服务会引发异常,我正在使用它来检测 CLI 调用。但是,仅为此目的捕获异常对我来说似乎很糟糕。
是否有任何可靠的方法来检查请求是否可以在当前上下文(执行,浏览器与 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();
}