在Symfony 3中获取所有可用的语言环境有些麻烦。这个想法是创建一个自定义语言切换器。
我有
parameters:
locale: en
app.locales: en|fr|ru
我可以获取请求的语言环境或存储在会话语言环境中的用户。但是我如何才能最终在Twig中获取Controller Service中的所有parameter.app.locales?这样我就可以拥有像en | fr | ru这样的ar数组。
谢谢。
由于您将语言环境指定为参数,因此可以根据所需位置检索参数值:
通过在服务定义中指定,通过构造函数参数传递语言环境:
服务:
class SomeService {
private $locales;
public function __construct(array $locales)
{
$this->locales = $locales;
}
...
}
服务定义:
...\Service\SomeService:
arguments:
- '%app.locales%'
您还可以通过服务容器检索参数:
$locales = $this->container->getParameter('app.locales');
通过上述方式获取语言环境后,您可以像渲染模板时的普通Twig变量一样将它们作为变量传递:
return $this->render('some.template.html.twig', [
'locales' => $locales,
]);