2016-12-07 55 views
1

我正在Symfony2中構建新聞訂閱表單。在這種形式下,這是一個用戶可以選擇語言的字段。在這個例子中,我將它設置爲NL。但是我怎樣才能獲得活躍(用戶在平臺上選擇定位)定位值並在此使用?使用定位來設置Symfony格式的默認選擇

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'); 
} 
+0

@見http://stackoverflow.com/questions/10073425/is-there-a-way-to-get-the-list-of-available-locales-in-php –

+0

我不是指可用位置,但是用戶在Symfony2平臺上處於活動狀態。 – Tom

+0

@see http://stackoverflow.com/questions/18949397/how-to-get-the-current-locale-in-symfony-2-3 –

回答

0

在您的控制器中獲取變量中的語言環境。 創建窗體通作爲參數的語言環境時後:

$form = $this->createForm(YourType::class, $yourEntity, ['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'], 

希望這會對您有所幫助。