【问题标题】:Use locate to set default choice in Symfony form使用 locate 在 Symfony 表单中设置默认选项
【发布时间】:2016-12-07 14:19:00
【问题描述】:

我正在 Symfony2 中构建一个时事通讯订阅表单。在此表单中,这些是用户可以选择语言的字段。在此示例中,我将其默认设置为 NL。但是如何获取活动(用户在平台上选择定位)定位值并在此处使用它?

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('email', 'text')
        ->add('langId', 'choice', array(
            'translation_domain' => 'messages',
            'choices' => array(
                'NL' => 'dutch',
                'EN' => 'english',
                'DE' => 'german',
            ),
            'data' => 'NL'
        ))
        ->add('save', 'submit');
}

【问题讨论】:

标签: php forms symfony


【解决方案1】:

在您的控制器中获取变量中的语言环境。 创建表单后,将语言环境作为参数传递:

$form = $this->createForm(YourType::class, $yourEntity, ['locale' => $locale]);

在您的表单中添加默认选项的“语言环境”键,默认值为空:

//from Symfony v2.7
public function configureOptions(OptionsResolver $resolver){
    $resolver->setDefaults(array(
        'locale' => null
    ));
}

//or this for older versions 

public function setDefaultOptions(OptionsResolverInterface $resolver){
    $resolver->setDefaults(array(
        'locale' => null
    );
}

最后用它来定义你的 ChoiceType 的默认值:

'data' => $options['locale'],

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2017-12-11
    • 2012-03-14
    相关资源
    最近更新 更多