/ / सिम्फनी - देखने के लिए भेजने से पहले डेटा ट्रांसफॉर्म करें - php, json, symfony, doctrine2

सिम्फनी - देखने के लिए भेजने से पहले डेटा ट्रांसफॉर्म करें - php, json, symfony, doctrine2

नमस्ते !

मैं इसे देखने के लिए डेटा भेजने से पहले डेटा बदलना चाहता हूं। दृश्य FOSRestBundle का उपयोग कर जेसन प्रतिक्रिया है।

उदाहरण के लिए, मेरे पास फ़ील्ड के साथ एक उत्पाद इकाई हैश्रेणी, जो एक श्रेणी इकाई का संदर्भ है। आउटपुट पर, मैं पूरी श्रेणी के साथ जेसन को प्रदर्शित नहीं करना चाहता, बल्कि केवल इसके आईडी फ़ील्ड को प्रदर्शित करना चाहता हूं।

बेशक, आप श्रेणी से केवल विशिष्ट फ़ील्ड को वापस करने के लिए नियंत्रक में इकाई को आगे संसाधित कर सकते हैं, लेकिन ..

मैं पूछना चाहता था, अगर कोई "मानक" समाधान है, तो यह कैसे करना है, शायद एनोटेशन का उपयोग करना?

धन्यवाद

उत्तर:

जवाब के लिए 2 № 1

मैं जो भी चाहता हूं उसे हासिल करने के लिए सर्वोत्तम अभ्यास या मानक तरीका मानता हूं (जेएसओएन के रूप में लौटने से पहले इकाई डेटा को फ़िल्टर / प्रोसेस करना), सीरिएलाइज़र का उपयोग करना है। आप का उपयोग करने पर विचार कर सकते हैं सिम्फनी सीरिएलाइज़र बंडल: http://symfony.com/doc/current/components/serializer.html या जेएमएस सीरिएलाइज़र: http://jmsyst.com/libs/serializer.

मैं खुद की सिफारिश करता हूं JMS एक, यह वास्तव में अच्छा दस्तावेज है, परिभाषा पूरी तरह से एनोटेशन के माध्यम से नियंत्रित होती है, और एक अच्छी तरह से सोचा घटना प्रणाली और कुछ फीचर जो मैं निम्नानुसार सूचीबद्ध कर सकता हूं:

- विशिष्ट इकाई विशेषताओं को एक्सपोज़ / बहिष्कृत करें।

- के लिए वर्चुअल प्रॉपर्टी (विशेषताएँ) बनाएंइकाई जेएसओएन में परिवर्तित हो जाने के बाद। (इसलिए उदाहरण के लिए यदि आपके पास विशेषता मूल्य के साथ इकाई उत्पाद है और आप जेएसओएन ऑब्जेक्ट कॉल टैक्सप्रिस में एक गणना क्षेत्र चाहते हैं तो आप इसे प्राप्त कर सकते हैं)।

- एक्सेस कंट्रोल जो विभिन्न समूहों में विशेषताओं को वर्गीकृत करके विशेषताओं / इकाइयों तक पहुंच सकता है।

- प्री सीरियलाइजेशन और पोस्ट सीरियलाइजेशन इवेंट्स ताकि आप डेटा को और भी आगे बढ़ा सकें।

मैं कह सकता हूं कि सेरियलाइज़र वन बंडल के साथ इतना अच्छा काम करता है कि एक बार जब आप इसका इस्तेमाल करते हैं, तो आप शायद ही कभी अपनी परियोजना को अलग तरीके से लिख सकते हैं: डी।