2017-06-19 67 views
2

的Symfony 2.8.2

按照Symfony的文檔「中選擇選項是一個數組,數組鍵是項目的標籤和數組值項的數值」

​​

但具有下列形式我看到了完全相反:

 $filterForm = $this->createFormBuilder() 
     ->add('vendorName', ChoiceType::class, array(
      'expanded' => true, 
      'multiple' => true, 
      'choices' => array('label' => 'value') // <-- HERE 
     )) 
     ->add('filter', SubmitType::class, array('label' => 'Filter')) 
     ->getForm(); 

呈現這樣的:

Label is value and the value is label

是文檔錯了嗎?或者我沒有得到它的權利?

回答

4

在較新的Symfony版本中,選項choices_as_values已被棄用。

https://github.com/symfony/symfony/issues/14951

這裏是一個解釋。我認爲在你的情況下,你必須切換或使用選項,只要你可以。

設置choices_as_valuestrue。如果你升級你必須改變這一點。

@Soullivaneuh choices_as_values不是直接給choice_label。所以你正在談論一個不同的話題。 choices_as_values控制選項是選項中的鍵還是值。 Symfony 2.0提供了選項作爲鍵(以及標籤作爲值),這意味着簡單的語法只有在您的選擇是整數或字符串時才起作用。任何其他情況(例如布爾選擇)都需要傳遞一個ChoiceList對象,這使得用法更加複雜(特別是對於忘記布爾值不能用作關鍵字的人來說,PHP只是簡單地將它們強制轉換爲字符串)。 這就是爲什麼這個選項已經在2.7中引入了能夠翻轉陣列(同時保持BC)的原因。優點是可以以這種方式使用任何類型的數據(字符串,整數,浮點數,布爾值,對象,數組)

+0

感謝您指出。所以我想我的選項要麼將choices_as_values設置爲true,要麼升級到3.x.請您反映,在您的回答 –

+0

@StasParshin更正中,請將choices_as_values設置爲true,以便將鍵作爲標籤。從v3開始,作爲標籤的鍵是默認值。 – jah