2012-10-28 30 views
3

我想在表單中顯示覆選框的動態列表。如何使用Symfony 2中的ChoiceListInterface?

到目前爲止,我構建了一個嵌入靜態複選框列表的表單,並且我爲不同語言的不同值創建了一個Tag實體,並填充了數據庫。我想用基於Tag實體的動態列表替換靜態複選框。

documentation說我應該使用ChoiceListInterface。但它的記錄確實很差。你會有一個例子或全球邏輯解釋來幫助我嗎?

回答

2

您可以擴展LazyChoiceList抽象類並實現loadChoiceList()方法,創建它的服務,將它注入到窗體中並將其設置爲choice_list選項。

+0

謝謝,但這看起來很難實施;我沒有在Google上找到這樣的例子:( – Yako

+2

@Yako這很容易。像這樣:http://stackoverflow.com/questions/13313415/symfony2-populate-choice-list-from-api-data :) – Tek

1

最後,我用了一個實體字段類型:

->add('tags', 'entity', array(
      'class' => 'bndMyBundle:Tag', 
      'query_builder' => function(EntityRepository $er){ 
       return $er->createQueryBuilder('t') 
         ->orderBy('t.en', 'ASC'); 
      }, 
      'expanded' => true, 
      'multiple' => true, 
      'property' => 'en', 
     )) 

然後,我只需要通過用戶的當前語言環境來替換成「en」值來選擇合適的語言。

+1

嘿Yako,這個答案根本沒有解決這個問題 - 它不應該被標記爲接受。來自@ m2mdas的人解決了這個問題。他的回答可能太短,但這與問題嚴格相關。我認爲你應該不接受它,要麼接受m2mdas的回答,要麼不接受任何等待更好的解釋。 (只是我的一面注意,好意) – bostaf

+0

是的,你說得對。感謝您的評論。 – Yako