Symfony2.8 获取表单类型中的区域设置

Keu*_*cht 3 forms locale symfony symfony-2.8

如何获取打字稿中的区域设置?

这是在我的控制器中:

$form = $this->createForm(new ConfiguratorClientType(), $configuratorClient);
Run Code Online (Sandbox Code Playgroud)

我的表单生成器中有这个:

->add('language',
    EntityType::class,
    array(
        'class' => 'CommonBundle:Language',
        'choice_label' => function ($language) {
            return $language->getName()[$locale];
        },
        'attr' => array(
            'class' => 'form-control'
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获取那里的语言环境。

yce*_*uto 7

如果您已经安装了该intl模块,则可以\Locale::getDefault()安全地使用来获取当前的语言环境值。即使该方法仅推断默认值,也可以通过\Locale::setDefault($locale)Symfony 在Request::setLocale方法中所做的操作来更改它。

因此,这应该适合您:

return $language->getName()[\Locale::getDefault()];
Run Code Online (Sandbox Code Playgroud)

更新:

但是,不建议在最终应用程序中使用此有状态类。相反,您应该遵循依赖倒置原则,将请求堆栈服务注入到构造函数中,并从那里检索当前区域设置(有关更多详细信息,请参阅其他答案),这将更容易测试。