2012-07-04 56 views
2

我有3個實體:Make,Model和Auto。 Make - > Model是一對多關係,Auto-> Model是多對多關係。symfony2,表單構建器,如何初始顯示一個空實體選擇列表

我想要實現的是能夠生成一個表格,其中包括Make(例如福特,歐寶)列表,並且最初加載一個空的模型列表。只有在列表中選擇了製造商時,才能填充型號列表,這是通過ajax調用實現的。

我的問題是我需要做的事情模型列表最初是空的,因爲表單構建器使用任何Make中的所有模型進行填充。

我可以通過使用query_builder來實現類似的功能,並假設搜索不存在的模型,但這不是賴特的方式。

class AutoType extends AbstractType { 
    public function buildForm(FormBuilder $builder, array $options) { 
     $builder->add('make','choice', array(
        'choices'=>Array('1'=>'Opel', '2'=>'Ford'), 
        'property_path'=>false, 
        'label'=>'Make')) 
       ->add('model', 'entity', array( // this fetches all models. Also don't want a subset of models, just empty list with 'Select Model' 
       'class' => 'Auto\SalonBundle\Entity\Model', 
       'empty_value' => 'Select Model' 
       )) 
       ->add('km') 
       ->add('cc') 
       ->add('hp') 
       ->add('kw') 
     ); 
    } 
} 

回答

0

爲了實現這一點,你必須創建你自己的表單類型和相應的_widget塊。或者,您可以使用包https://github.com/shtumi/ShtumiUsefulBundle的依賴過濾表單類型更快地到達那裏。

+0

實際上,我最終將一個參數'make'傳遞給AutoType並使用query_builder加載模型的子集。要實現空列表,最初我傳遞一個不存在的Make,因此模型列表最初顯示爲空。只有當選擇了製作時,模型列表纔會被填充。它有效,暫時我就這樣離開它。我會在稍後檢查你的建議,並感謝你在這個問題上的努力。 – Bekim

相關問題