मैं सिम्फनी 3 का उपयोग कर रहा हूं और मैं नाम और शहर जैसे दो क्षेत्रों को एक साथ जोड़कर कस्टम चयन मान प्रदर्शित करने में सक्षम होना चाहता हूं। तो, संक्षेप में चुनिंदा बॉक्स में यह यह दिखाएगा:

 ------------------------------------
 John Smith - Denver
 ------------------------------------
 Abe Lincoln - Washington D.C
 ------------------------------------
 George Washington - Washington D.C
 ------------------------------------
 etc...
 ------------------------------------

ये रहा मेरा फॉर्म...

$builder->add('person', EntityType::class, array(
            'required'=>false,
            'class'=>'AppBundle:Person',
            'choice_label'=>'name',
            'label'=>'Choose the person',
            'empty_data'=>null,
            'placeholder'=>"None",
            'query_builder' => function(EntityRepository $repository) {
                return $repository->createQueryBuilder('p');
            }
        ));
0
LargeTuna 14 मार्च 2017, 20:47

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि Symfony Doc कहता है choice_label एक कॉल करने योग्य भी हो सकता है जो आपको दो विकल्प देता है।

  1. रचित मूल्य के लिए एक गेटर बनाएं जो इकाई का प्रतिनिधित्व करे जैसे:

    class Person {
        // ...
    
        public function getComposedName() {
            return $this->name . ' - ' . $this->city;
        }
    
    }
    

और फिर फॉर्म में choice_label से 'composedName' सेट करें। कृपया ध्यान दें कि यह composedName है, न कि getComposedName, क्योंकि सिम्फनी PropertyAccesor यहां, यह एक गेट्टर getComposedName के साथ मूल्य प्राप्त करने का भी प्रयास करेगा।

यह उपयोगी हो सकता है यदि आपको अन्य स्थानों पर इस मान की आवश्यकता होगी

  1. यदि आपको केवल इस विशेष रूप में इसकी आवश्यकता है, तो आप एक अनाम फ़ंक्शन को सीधे फ़ॉर्म में पास कर सकते हैं:

    'choice_label'=> function($person) {
        return $person->getName(). ' - ' . $person->getCity();
    }
    
1
Jakub Matczak 15 मार्च 2017, 00:08