2012-03-10 14 views
25

यह गीथूब पर सिम्फनी 2 भंडार से FormEvents वर्ग है। यह मुख्य लेख, How to Dynamically Generate Forms Using Form Events से जुड़ा हुआ है।Symfony2 फॉर्म घटनाओं का विवरण?

किसी भी व्यक्ति को प्रवाह में कहा जाता है जब कोई भी घटनाओं को बुलाया जाता है? केवल पढ़ने के लिए प्रपत्र डेटा तक पहुँच -

DataEvent:

namespace Symfony\Component\Form; 

/** 
* @author Bernhard Schussek <[email protected]> 
*/ 
final class FormEvents 
{ 
    const PRE_BIND = 'form.pre_bind'; 
    const POST_BIND = 'form.post_bind'; 
    const PRE_SET_DATA = 'form.pre_set_data'; 
    const POST_SET_DATA = 'form.post_set_data'; 
    const BIND_CLIENT_DATA = 'form.bind_client_data'; 
    const BIND_NORM_DATA = 'form.bind_norm_data'; 
    const SET_DATA = 'form.set_data'; 
} 

उत्तर

65

घटनाओं के दो प्रकार के होते हैं। 'प्री' और 'पोस्ट' इवेंट केवल पढ़ने के लिए हैं।

FilterDataEvent - घटना जो फ़ॉर्म डेटा को संशोधित करने की अनुमति देती है।

form.pre_bind DataEvent शुरू हो रहा से पहले डेटा प्रपत्र के लिए बाध्य है। द्वारा Symfony\Component\Form\Form::bind()

उत्प्रेरित form.post_bind DataEvent शुरू हो रहा के बाद डेटा प्रपत्र के लिए बाध्य है। form.pre_set_data DataEventSymfony\Component\Form\Form::bind()

से शुरू हो रहा से पहले क्षेत्रों डिफ़ॉल्ट डेटा से भर रहे हैं शुरू हो गया। Symfony\Component\Form\Form::setData()

से शुरू हो रहा form.post_set_data DataEvent के बाद खेतों डिफ़ॉल्ट डेटा से भर रहे हैं शुरू हो गया। द्वारा Symfony\Component\Form\Form::setData()

form.bind_client_data FilterDataEvent से पहले डेटा प्रपत्र के लिए बाध्य है शुरू हो रहा शुरू हो गया। Symfony\Component\Form\Form::bind()

से शुरू हो रहा form.bind_norm_data FilterDataEvent शुरू हो रहा के बाद डेटा सामान्यीकृत किया गया है। Symfony\Component\Form\Form::bind() द्वारा ट्रिगर किया गया। Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener (उदाहरण के लिए UrlType से जोड़ा)

देखें form.set_data FilterDataEvent शुरू हो रहा है, जबकि डिफ़ॉल्ट डेटा बाध्य किया जा रहा है। Symfony\Component\Form\Form::setData()

द्वारा ट्रिगर किए गए मैं इन घटनाओं को ट्रिगर करने के दौरान बेहतर तरीके से महसूस करने के लिए फॉर्म क्लास के चारों ओर पोकिंग करने की सलाह दूंगा, और आप उनका उपयोग कैसे कर सकते हैं।

+0

वास्तव में धन्यवाद, जवाब स्वीकार किया गया! इस बीच मुझे फॉर्म इवेंट्स के साथ कुछ समस्याएं आ रही हैं, अगर आपके पास कुछ अतिरिक्त समय है तो आप मुझे थोड़ी मदद दे सकते हैं: http://stackoverflow.com/questions/9661026/accessing-a-form-field-from- ए-सब्सक्राइबर-ऑफ-ए-फॉर्म-इवेंट-इन-सिम्फनी 2 – Polmonino

+14

यह ध्यान दिया जाना चाहिए कि फॉर्म इवेंट्स का यह विवरण केवल सिम्फनी 2.0 फॉर्म घटक के लिए मान्य है। निम्नलिखित घटनाओं को 2.1 के रूप में बहिष्कृत कर दिया गया है और 2.3: 'form.bind_client_data',' form.bind_norm_data', 'form.set_data' के रूप में हटा दिया जाएगा। 2.1 के रूप में, फॉर्म इवेंट श्रोताओं को अब हटाए गए 'फ़िल्टरडाटाइवेंट' और 'डेटाइवेंट' ऑब्जेक्ट्स के बजाय 'फॉर्मइवेंट' ऑब्जेक्ट प्राप्त होता है, जिसे 2.3 में हटा दिया जाएगा। –

+0

अरे @ xanido, आपके लिंक टूटा हुआ है। – Mick

संबंधित मुद्दे