मैं विज्ञापन के लिए एक पृष्ठ बना रहा हूं। एक विज्ञापन विभिन्न प्रकार के हो सकता है और इसलिए अलग-अलग डेटा हो सकते हैं। उदाहरण के लिए, एक वाहन में make
और model
अतिरिक्त डेटा के रूप में होगा।गतिशील रूप (स्विच इकाई) symfony2
अभी, मेरे पास एक आधार सिद्धांत इकाई Advert
है जिसमें प्रत्येक विज्ञापन की आवश्यकता होती है। बदले में अलग-अलग विज्ञापन इस डेटा को निष्क्रिय करते हैं (doctrine2 discriminatormap)
यदि उपयोगकर्ता वाहन विज्ञापन बनाने का विकल्प चुनता है तो मैं गतिशील रूप से फॉर्म (एजेक्स और सिम्फनी 2 रूपों के साथ) को पॉप्युलेट करना चाहता हूं, मैं वाहन विज्ञापन के विकल्पों को प्रदर्शित करना चाहता हूं। लेकिन मुझे इकाई को AdvertVehicle
के रूप में बदलने की भी आवश्यकता है।
क्या यह संभव है? मैं symfony2 मुखपृष्ठ
पर रसोई की किताब प्रविष्टि पढ़ा है "कैसे गतिशील रूप से प्रपत्र फार्म घटनाक्रम का उपयोग करते हुए संशोधित करने के लिए": यह एक AJAX कॉल आपके आवेदन को वापस करने से संभाला जाना चाहिए। उस नियंत्रक में, आप अपना फॉर्म जमा कर सकते हैं, लेकिन इसे संसाधित करने के बजाय, अपडेट किए गए फ़ील्ड को प्रस्तुत करने के लिए सबमिट किए गए फॉर्म का उपयोग करें। AJAX कॉल से प्रतिक्रिया का उपयोग दृश्य को अद्यतन करने के लिए किया जा सकता है।
मैं समझता हूँ कि मेरे नियंत्रक करने के लिए वापस एक ajax कॉल करने के लिए, और मैं कैसे फार्म घटनाओं का उपयोग करने समझते हैं लेकिन मैं कैसे एक प्रदान की गई चुनिंदा-बॉक्स से प्रतिक्रिया प्राप्त करते हैं (उदाहरण के लिए वाहन मॉडल युक्त) वापस ? एक नया सार टाइप के साथ? या फॉर्मबिल्डर?
और फिर जब उपयोगकर्ता वास्तव में फॉर्म सबमिट करता है तो मुझे चयनित विज्ञापन प्रकार की इकाई का उपयोग करने की आवश्यकता होती है। क्या मैं इकाई के विकल्प के अनुसार गतिशील रूप से इकाई को बदल सकता हूं?
संपादित करें मैंने फ़ॉर्म को अनन्तता की जांच की है, धन्यवाद। मैं AdvertType
का विस्तार करता हूं और buildForm()
विधि को ओवरराइड करता हूं और इससे पहले कि मैं AdvertVehicleType
के लिए आवश्यक वस्तुओं को जोड़ूं, मैं मूल विधि को कॉल करता हूं।
बारे में अन्य स्पष्टीकरण हर विज्ञापन इकाई price
, description
, title
और category
शामिल हैं। कुछ विज्ञापन में make
और model
जैसे अधिक शामिल हैं। वे discriminatormap
(doctrine2) द्वारा विभेदित होते हैं
उदाहरण: उपयोगकर्ता श्रेणी cars
मैं (मान्यता और दृढ़ता के लिए) CarAdvert
इकाई का उपयोग करना चाहते का चयन करता है
// -- Entity
class CarAdvert extends Advert {
protected $model;
protected $make;
}
// -- Entity
// -- This uses discriminator mapping
class Advert {
protected $title;
protected $description;
protected $price;
protected $category;
}
यदि उपयोगकर्ता घर का चयन करता है, तो itemcategory पकड़ो मैं सिर्फ सामान्य Advert
इकाई का उपयोग करना चाहता हूं।
एक बड़ी समस्या अभी भी है कि मैं यह नहीं समझ सकता कि AJAX के माध्यम से विस्तारित फ़ॉर्म को कैसे प्रस्तुत किया जाए। इस भाग पर कोई सुझाव? जब उपयोगकर्ता एक श्रेणी के रूप में कार का चयन करता है, तो मैं फॉर्म को अपडेट करना चाहता हूं (jQuery/AJAX के माध्यम से) लेकिन मैं एक नियंत्रक कैसे बना सकता हूं जो केवल फॉर्म के विस्तारित भाग को पुनर्प्राप्त करता है और HTML को प्रतिक्रिया के रूप में वापस भेजता है (बिना टहलने के और इसे एक दृश्य में प्रस्तुत करना, क्या यह संभव है)?
समाधान:
देखें नीचे का जवाब!
आप अपने फॉर्म प्रकारों में विरासत का उपयोग कर सकते हैं, यह 2 समान रूपों के लिए कोड डुप्लिकेट करने से बचाता है। उदाहरण: 'विज्ञापन प्रकार' 2 फ़ील्ड है 2 विज्ञापन जोड़ने के लिए 'AdvertVehicleType'' AdvertType' बढ़ा सकता है। कृपया हमें अपनी संस्थाओं के बारे में और बताएं, उन्हें कैसे घोषित किया जाता है, आप दो प्रकार के 'विज्ञापन' इत्यादि को कैसे अलग करते हैं, –
इस प्रश्न @ एस्बेस्टोस पर कोई भी अपडेट? मुझे एक समान समस्या का सामना करना पड़ रहा है, इसलिए मुझे इस मुद्दे के साथ एक संभावित समाधान या अनुभव में दिलचस्पी है .. धन्यवाद! – acrobat
मुझे आशा है कि अद्यतन उत्तर पर्याप्त है @acrobat यदि आपको अधिक जानकारी चाहिए तो एक और टिप्पणी छोड़ने में संकोच नहीं करें! – Asbestos