2012-02-16 4 views
5

मैं एक श्रेणियाँ तालिका है, ट्री वास्तुकला के साथ बनाया गया है, सिद्धांत ट्री एक्सटेंशन का उपयोग कर जनरेट कर रहा है और यह इसSymfony2, सिद्धांत एक्सटेंशन ट्री: ड्रॉपडाउन सूची का चयन तरह का "वृक्ष"

id parent_id title lft lvl rgt root 
864 (NULL) Movies 1 0 18 864 
865 864 Packs 2 1 3 864 
866 864 Dubbed 4 1 5 864 

और नेत्रहीन तरह दिखता है इस तरह:

Movies 
| 
| 
|->Packs 
|->Dubbed 
अब मैं प्रत्येक फिल्म के लिए ड्रॉपडाउन सूची के रूप में समीक्षाएँ, और लदान श्रेणियों को जोड़ने के लिए उत्पन्न प्रपत्र करना चाहते हैं, तो मैं मेरी फिल्म समीक्षा प्रपत्र प्रकार श्रेणी में है

public function buildForm(FormBuilder $builder, array $options) 
{ 

    $builder->add('name'); 
    $builder->add('file'); 
    $builder->add('cover'); 
    $builder->add('category','entity',   array('class'=>'Tracker\MembersBundle\Entity\Category', 'property'=>'title',));   
} 

जो इस तरह एक सामान्य लटकती मेनू उत्पन्न करता है:

enter image description here

मैं अपने मेनू सेटिंग्स कैसे कॉन्फ़िगर कर सकते हैं, तो यह एक पेड़ की तरह-लटकती चयन इस तरह उत्पन्न करता है?

enter image description here

उत्तर

14

मुझे यकीन है कि यह एक अच्छा विचार है नहीं कर रहा हूँ: उपयोगकर्ताओं को अपनी पसंद में टाइप करने में सक्षम नहीं होगा।

इस समाधान का परीक्षण नहीं किया है, लेकिन यह काम करना चाहिए:

सबसे पहले, आप इसे ठीक से प्रदर्शित करने के लिए रूट और एलएफटी मूल्य से तीन सॉर्ट कर सकते हैं, तो एक प्रश्न बिल्डर जोड़ें:

'query_builder' => function($er) { 
    return $er->createQueryBuilder('c') 
     ->orderBy('c.root', 'ASC') 
     ->addOrderBy('c.lft', 'ASC'); 
}, 

जब आप प्रपत्र का निर्माण, आभासी प्रदर्शित करने के लिए

public function getIndentedTitle() { 
    return str_repeat("--", $this->lvl).$this->title; 
} 

अंत में, अपने विकल्पों के लिए किसी प्रॉपर्टी विकल्प जोड़ने के बाद, आपको अपने संस्था के लिए एक getIndentedTitle विधि जोड़ने की जरूरत संपत्ति शीर्षक के स्थान पर indentedTitle:

'property' => 'indentedTitle' 

देखें: http://symfony.com/doc/current/reference/forms/types/entity.html

संबंधित मुद्दे