2012-08-08 10 views
7

में JSON करने के लिए वस्तु कन्वर्ट करने के लिए मैं इस का उपयोग कर रहा:कैसे symfony2

$users = $em->getRepository('UserBundle:User')->getallUsers($search); 
    $response = new Response(json_encode($users)); 
    $response->headers->set('Content-Type', 'application/json'); 
    return $response; 

उपयोगकर्ता, विभिन्न इकाइयों एकल नहीं परिणाम है।

लेकिन मैं इस हो रही है:

[{},{},{},{},{},{}] 

मैं की तरह कुछ हैं:

[ { label: $user.getName(), value: $user.getId() }, ... ] 

मैं कैसे कर सकते हैं कि?

संपादित करें: मैं भी कोशिश की json_encode($users->toArray()) तो मैं इस त्रुटि मिलती है:

Call to a member function toArray() on a non-object

+1

सिम्फोनी का कौन सा संस्करण का उपयोग करते हैं के लिए {{ your_variable|raw }}

क्षमा का प्रयास करें? –

+0

symfony 2.1 नवीनतम संस्करण – user825904

उत्तर

6

आप अपने वस्तुओं को क्रमानुसार करने के लिए एक रास्ता है की जरूरत है, तो आप json_encode उम्मीद नहीं कर सकते जादुई अनुमान लगाना जो क्षेत्रों के लिए अनुमति दी जाती है एन्कोड किया जाना चाहिए।

इस कार्य के लिए मैं एक अच्छा बंडल सुझाता हूं JMSSerializerBundle है। सुनिश्चित करें कि आप इसका उपयोग करने से पहले दस्तावेज़ों के माध्यम से सावधानी से पढ़ लें!

अंत परिणाम शायद इस तरह दिखेगा:

$users = $em->getRepository('UserBundle:User')->getallUsers($search); 
$response = new Response($container->get('serializer')->serialize($users, 'json')); 
+1

मैं पहले से ही जेएमएसएसरियलाइज़रबंडल को जेव करता हूं लेकिन मुझे यह त्रुटि मिलती है 'आपने एक गैर-मौजूद सेवा "सीरियलज़र" का अनुरोध किया है।' मैं जेएमएस – user825904

+0

के लिए सेवा कैसे घोषित कर सकता हूं यदि आपको यह त्रुटि मिलती है तो यह ठीक से इंस्टॉल नहीं है। – Inoryy

+0

यह जेएमएस विक्रेता में है और इसका नवीनतम संस्करण – user825904

0

देर

+0

से पहले '$ this' को याद करते हैं, यह अच्छी तरह से सबसे आसान तरीका है, लेकिन यह स्वचालित नहीं है और कक्षा में' __toString() 'फ़ंक्शन को कार्यान्वित करने की आवश्यकता है, जो 'json_serialize (array (..)) 'उत्पाद। – Croll