मान लें कि मैं कस्टम फॉर्म प्रकारों को सेवाओं के रूप में बनाता हूं, क्योंकि यह Symfony documentation में वर्णित है। लेकिन मैं 2 2 अलग इनपुट पैरामीटर के साथ "लिंग" कस्टम प्रकार, है, जो मैं Symfony 2.7 में इस तरह कर रहा था चाहते हैं:सिम्फनी 2.8/3.0 अपग्रेड: वेरिएबल पैरामीटर के साथ फॉर्म प्रकारों से कैसे निपटें?
# app/config/config.yml
parameters:
genders1:
m: Male
f: Female
genders2: # This makes no sense at all, but it is for the example purpose!
h: Horse
t: Turtle
और फिर, मैं इस तरह 2 सेवाओं की घोषणा की गई थी:
<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundle\Form\Type\GenderType">
<argument>%genders1%</argument>
<tag name="form.type" alias="gender1" />
</service>
<service id="app.form.type.gender2" class="AppBundle\Form\Type\GenderType">
<argument>%genders2%</argument>
<tag name="form.type" alias="gender2" />
</service>
आप देखते हैं, मैं (gender1
और gender2
उपनाम के साथ) हीGenderType
2 के लिए वर्ग कस्टम प्रपत्र प्रकार का उपयोग किया गया था, के रूप में कर सकते हैं मैं इस तरह इस्तेमाल कर सकते हैं जो:
$builder
->add('field1', 'gender1')
->add('field2', 'gender2');
इसने मुझे विभिन्न इनपुट पैरामीटर के साथ केवल एक वर्ग (GenderType
) में कुछ सामान्य तर्क जोड़ने की अनुमति दी (मेरे पास इस उदाहरण में 2 से अधिक संभावनाएं हैं)।
लेकिन सिम्फनी 2.8 के रूप में, सेवा उपनाम का उपयोग करके एक फ़ील्ड जोड़ना बहिष्कृत किया गया है।
$builder->add('field1', GenderType::class)
तो मैं अपने 2 सेवाएं (उनमें से प्रत्येक एक ही इनपुट पैरामीटर नहीं होने) के बीच का अंतर कैसे बना सकते हैं: वर्ग के नाम के बजाय दूसरा तर्क के रूप में पारित किया जाना है, इस तरह है?
Gender1Type
और Gender2Type
बनाना एक सार GenderType
कक्षा का विस्तार वास्तव में दर्दनाक होगा, क्योंकि मुझे खाली सामग्री के साथ बहुत से वर्ग बनाना होगा।
क्या आपको कोई विचार है कि सिम्फनी 2.8 में मेरे पैटर्न को कैसे कार्यान्वित किया जाए, विभिन्न इनपुट पैरामीटर के साथ सेवाओं को बनाए रखने, लेकिन बहुत सी कक्षाएं नहीं बना रही हैं?
हाँ। मैं एक ही चीज़ में भाग गया और एक ही निष्कर्ष पर आया। कक्षा के नामों का उपयोग करने में फायदे हैं लेकिन इस मामले में मुझे अभी भी मूल डिजाइन पर स्पष्ट लाभ नहीं दिख रहा है। ओह अच्छा। – Cerad