使用locate在Symfony表单中设置默认选项

时间:2016-12-07 14:19:00

标签: php forms symfony

我正在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');
}

1 个答案:

答案 0 :(得分:0)

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

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

在您的表单中添加默认选项' locale'具有null默认值的键:

//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'],

希望这会对你有所帮助。