2011-05-11 10 views
6

सिम्फनी 2.0 में, फ़ॉर्म में एक-से-एक एसोसिएशन का उपयोग करके ड्रॉप डाउन सूची कैसे बनाएं? क्या आप लोग अच्छे उदाहरण दे सकते हैं?फॉर्म में एक-से-एक एसोसिएशन?

+0

पर पाया जाता है क्या आप जो चाहते हैं उसके बारे में अधिक जानकारी प्रदान कर सकते हैं? – Riley

+0

मैं एक-से-एक संबंधित तालिका से combobox बनाना चाहता हूँ। – Zeck

उत्तर

11

मैं आपके प्रश्न का उत्तर देने की कोशिश करूंगा जिस तरह से मैं इसे समझता हूं। मान लें कि मेरे पास Faculty ऑब्जेक्ट एक University ऑब्जेक्ट से जुड़ा हुआ है। तो एक संकाय बनाने या संपादित करने के लिए प्रयुक्त रूप में, मैं डेटाबेस में सभी विश्वविद्यालयों का एक कॉम्बो बॉक्स प्रदर्शित करता हूं और उपयोगकर्ता उनमें से एक को चुनता है। एक विशेष सिम्फनी फ़ील्ड प्रकार है जो वास्तव में यह करता है: इकाई प्रकार।

// Application\AcmeBundle\Form\Type\FacultyType 
public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('name'); 
    $builder->add('university', 'entity', array(
     // The class of the entity used as a combo box item 
     'class' => 'AcmeBundle:University', 

     // The property of the entity displaying the entity as text 
     'property' => 'name', 

     // The query builder used to populate the combo box, accepts 
     // a QueryBuilder object or a \Closure like below 
     'query_builder' => function(EntityRepository $repository) { 
      // This will return a query builder selecting all universities 
      return $repository->createQueryBuilder('u'); 
     } 
    )); 
} 

नोट:: अन्य संपत्तियों इकाई फ़ील्ड प्रकार के लिए सेट किया जा सकता है कि कर रहे हैं, मैं तुम्हें लेने के लिए आमंत्रित नीचे buildForm विधि है कि मैं संकाय प्रपत्र बनाने के लिए इस्तेमाल मेरी FacultyType वस्तु में उपयोग के कोड है इस पर अधिक जानकारी के लिए इस page पर एक नज़र डालें।

प्रस्तुत किया गया, यह डेटाबेस में सेट किए गए सभी विश्वविद्यालयों के साथ एक कॉम्बो बॉक्स दिखाएगा। जब उपयोगकर्ता फॉर्म को सहेजता है, तो विश्वविद्यालय को एक सेटटर के माध्यम से फ़ॉर्म के लिए संकाय संकाय वस्तु को सौंपा जाता है। आप शायद कॉम्बो बॉक्स की बजाय ड्रॉप-डाउन सूची प्रस्तुत कर सकते हैं। यदि आपको एकाधिक इकाइयों का चयन करने की आवश्यकता है, तो फ़ील्ड प्रकार इकाई का 'multiple' विकल्प उपयोगी हो सकता है।

यह कहा जा रहा है कि मैंने जो उदाहरण दिखाया है वह एक-से-वन संबंध नहीं है बल्कि Faculty ऑब्जेक्ट के लिए कई से एक है और University ऑब्जेक्ट के लिए एक-से-कई है। एक से एक संबंध एक संबंध की तरह कुछ और होगा जहां University में अद्वितीय Address है। इस मामले में, कॉम्बो बॉक्स उपयोगी नहीं होगा क्योंकि विश्वविद्यालय में केवल एक एड्रेस हो सकती है, इसलिए उप-फॉर्म अधिक उपयुक्त होगा। यदि इसमें कई पते हैं, तो यह विश्वविद्यालय और उसके संकाय के बीच संबंधों की तरह एक से कई संबंध बन जाता है।

सुनिश्चित नहीं है कि यह आपके प्रश्न का सही उत्तर देगा लेकिन मुझे उम्मीद है कि यह आपको अंतिम समाधान में ले जाएगा।

सादर, मैट