2012-04-27 40 views
1

我有一個窗體顯示可供選擇的類別的下拉菜單。Symfony 2 - 表單實體類型:如何格式化生成的下拉列表?

這些類別使用​​Gedmo Tree Extension進行設置,因此類別可以包含子類別。

我在窗體構建器中有一個自定義查詢,它只選擇屬於特定組的類別。但是,我需要能夠在下拉列表中顯示哪些類別是父母,哪些是兒童,例如,

Parent Category 1 
    -- Child Category A 
    -- Child Category B 
Parent Category2 
    -- Child Category C 

任何想法,我怎麼能做到這一點?

另外,我怎麼能傳遞一個變量到我的query_builder,從正在調用formtype控制器?

回答

1

如果你不需要選擇父,你可以使用OPTGROUP標籤

<select> 
    <optgroup label="Category 1"> 
     <option>Option 1...</option> 
     <option>Option 2...</option> 
     <option>Option 3...</option> 
    </optgroup> 
    <optgroup label="Category 2"> 
     <option>Option 1...</option> 
     <option>Option 2...</option> 
     <option>Option 3...</option> 
    </optgroup> 
</select> 

編輯:

Symfony的2支持與陣列(未經測試,可能含有錯誤)的OPTGROUP標籤:

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $category_choices = array(
     array('Category 1' => array(
      '1' => 'Option 1...', 
      '2' => 'Option 2...', 
      '3' => 'Option 3...' 
     )), 
     array('Category 2' => array(
      '4' => 'Option 4...', 
      '5' => 'Option 5...' 
     )) 
    ); 

    $builder->add('category_list', 'choice', array(
     'label' => 'Category', 
     'choices' => $category_choices 
    )); 
} 
+0

可悲的是,它並不那麼簡單。 Symfony2的處理