द्वारा जोड़े गए तत्व बनाने के लिए ईवेंट श्रोता जोड़ें, मैं एक सिम्फनी ऐप बना रहा हूं और पूरे "राज्य/इलाके" चीज़ को करने के लिए कुछ jquery/AJAX के साथ फॉर्म इवेंट्स का उपयोग कर रहा हूं। हालांकि मुझे थोड़ा सा मुद्दा है, मैं प्रारूप प्रांत -> शहर -> उपनगर का उपयोग कर रहा हूं। जाहिर हैइवेंट श्रोता
The child with the name "physicalCity" does not exist.
यह: अब जहाँ तक मैं बता सकता हूँ मेरे कोड ठीक है, लेकिन जब निष्पादन अनुभाग जहां मैं "शहर" के लिए एक श्रोता जोड़ने के हिट का चयन, यह निम्न कह एक त्रुटि फेंकता तब होता है जब मैं नए बनाए गए फ़ील्ड में इवेंट श्रोता को आज़माता हूं और जोड़ता हूं, इस प्रकार किसी ईवेंट श्रोता द्वारा बनाए गए तत्व में इवेंट श्रोता जोड़ता है?
कोड का एक अनुभाग नीचे है ... मैं क्या गलत कर रहा हूं? किसी भी मदद को बहुत, बहुत सराहा जाएगा!
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('schoolName')
->add('physicalProvince', 'entity', array(
'mapped' => false,
'class' => 'MY\MainBundle\Entity\Province',
'empty_value' => 'Select a province',
'attr' => array(
'class' => 'province',
'data-show' => 'physical-city',
)
));
/*
* For the physical cities
*/
$physicalCityModifier = function(FormInterface $form, Province $province = null) {
if (null !== $province)
$cities = $province->getCities();
else
$cities = array();
$form->add('physicalCity', 'entity', array(
'mapped' => false,
'class' => 'MY\MainBundle\Entity\City',
'empty_value' => 'Select a province first',
'choices' => $cities,
'attr' => array(
'class' => 'city physical-city',
'data-show' => 'physical-suburb'
)
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($physicalCityModifier) {
$data = $event->getData();
if (is_object($data->getPhysicalSuburb()))
$province = $data->getPhysicalSuburb()->getCity()->getProvince();
else
$province = null;
$physicalCityModifier($event->getForm(), $province);
}
);
$builder->get('physicalProvince')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($physicalCityModifier) {
$province = $event->getForm()->getData();
$physicalCityModifier($event->getForm()->getParent(), $province);
}
);
/*
* For the physical suburbs
*/
$physicalSuburbModifier = function(FormInterface $form, City $city = null) {
if (null !== $city)
$suburbs = $city->getSuburbs();
else
$suburbs = array();
$form->add('physicalSuburb', null, array(
'choices' => $suburbs,
'empty_value' => 'Select a city first',
'attr' => array(
'class' => 'physical-suburb'
),
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($physicalSuburbModifier) {
$data = $event->getData();
if (is_object($data->getCity()))
$city = $data->getCity();
else
$city = null;
$physicalSuburbModifier($event->getForm(), $city);
}
);
$builder->get('physicalCity')->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) use ($physicalSuburbModifier) {
$city = $event->getForm()->getData();
$physicalSuburbModifier($event->getForm()->getParent(), $city);
}
);
}
शानदार काम! आपने मेरा दिन बचाया, धन्यवाद! :) – Gianluca78
क्या यह इस सामग्री को संपादित करते समय भी काम करता है। मेरे लिए यह नहीं था। क्या आप कृपया उत्तर दे सकते हैं कि सिम्फनी के किस संस्करण ने आप इसे काम किया था? – Jeet
हाँ यह मेरे लिए काम किया। यह एसएफ 2.4 था मेरा मानना है, बिल्कुल याद नहीं कर सकता। क्वेरी बिल्डर निर्णय के मामलों के साथ बस कोशिश करें और खेलो। शायद आपके मामले में कुछ अजीब है। और XDebug स्थापित करें! बहुत मदद करता है। – iLikeBreakfast