मैं प्रोपेलबंडल के साथ सिम्फनी 2.1 रूपों का उपयोग कर रहा हूं और मैं एक ऐसे फॉर्म को दोबारा करने की कोशिश कर रहा हूं जिसमें वस्तुओं की एक ड्रॉप-डाउन सूची (से चुनने के लिए) की बजाय एक jquery स्वत: पूर्ण फ़ील्ड (AJAX के साथ काम करना) का उपयोग करें। ड्रॉपडाउन सूची के लिए मैं अपने प्रपत्र प्रकार में निम्न कोड (जो लटकती के लिए पूरी तरह से काम किया है) का उपयोग किया गया था:संग्रह के लिए एक सिम्फनी 2 फॉर्म में एक स्वतः पूर्ण फ़ील्ड कैसे जोड़ें और प्रोपेल का उपयोग कैसे करें?
$builder->add('books', 'collection', array(
'type' => 'model',
'options' => array(
'class' => 'MyVendor\MyBundle\Model\Book',
'property' => 'title',
),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'required' => false,
));
एक छोटे संदर्भ देने के लिए, मान लीजिए कि हम एक नया "रीडर पैदा कर रहे जाने "ऑब्जेक्ट और हम उपलब्ध" पुस्तक "ऑब्जेक्ट्स की सूची से रीडर की पसंदीदा पुस्तकें चुनना चाहते हैं। एक संग्रह प्रकार का उपयोग किया जाता है ताकि नए "रीडर" फ़ॉर्म में कई "पसंदीदा पुस्तकें" का चयन किया जा सके। अब, मैं उपरोक्त उपयोग करने के लिए उपरोक्त को बदलना चाहता हूं। ऐसा करने के लिए, मैंने Data Transformer to be able to get a Book object from a simple text field को कार्यान्वित करने का प्रयास किया जिसका उपयोग the answer to this Question में इंगित पुस्तक आईडी को पास करने के लिए स्वत: पूर्ण कार्य के लिए किया जा सकता है। हालांकि, मैं डेटा ट्रांसफार्मर को संग्रह प्रकार और प्रोपेल कक्षाओं के साथ काम करने का तरीका समझने में सक्षम नहीं था। मैं एक BookToIdTransformer वर्ग के रूप में Symfony कुकबुक में संकेत दिया और "ReaderType" फ़ाइल में निम्न की कोशिश की बनाई: अपवाद (जाहिरा तौर पर ट्रांसफार्मर की उम्मीद:
$transformer = new BookToIdTransformer();
$builder->add(
$builder->create('books', 'collection', array(
'type' => 'text',
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'required' => false,
))->addModelTransformer($transformer)
);
ऊपर के साथ
, मैं एक "getId अपरिभाषित विधि के लिए कॉल करें" मिलता है किताबों का एक प्रस्ताव चयन, एक पुस्तक वस्तु नहीं ..)। क्या किसी को पता है कि इसके बारे में कैसे जाना है? या मुझे बताएं कि क्या प्रोफेल का उपयोग करते हुए सिम्फनी में स्वत: पूर्ण करने के अन्य तरीके हैं और एकाधिक ऑब्जेक्ट्स (जैसे पुस्तकों का संग्रह) चुनने की अनुमति है?
पूरी तरह से स्पष्टीकरण के लिए धन्यवाद। यदि आपके पास कई नियंत्रक क्रियाएं हैं जो JSON प्रतिक्रियाओं को वापस करनी चाहिए, तो मैं अनुशंसा करता हूं कि FOSRestBundle – Narretz
क्या आप अपने व्यू/फॉर्म का स्निपेट जोड़ सकते हैं? – timaschew
@timaschew अगर मुझे अच्छी तरह से याद है (मुझे इसकी आवश्यकता नहीं है), दृश्य में कोड केवल सिम्फनी रूपों के लिए उपयोग किया जाने वाला मानक है। क्षेत्र एक नियमित पाठ इनपुट है। इनपुट की आईडी का उपयोग कर जावास्क्रिप्ट का उपयोग करके टोकनइनपुट प्लगइन द्वारा उस इनपुट में स्वत: पूर्ण कार्यक्षमता को जोड़ा जाता है: $ ("# my-text-input")। टोकन इनपुट ("/ url/to/your/script /"); – RayOnAir