2012-08-08 5 views
7

Objekt JSON konvertieren ich dies mit:Wie in Symfony2

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

Benutzer sind mehrere Entitäten nicht einzelnes Ergebnis.

Aber ich bin immer dies:

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

Ich möchte so etwas wie:

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

Wie kann ich das tun?

EDIT: Ich habe auch versucht json_encode($users->toArray()) dann bekomme ich diesen Fehler:

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

+1

Welche {{ your_variable|raw }}

Leider Versuchen Version von Symfony verwenden Sie? –

+0

symfony 2.1 letzte Version – user825904

Antwort

6

Sie müssen einen Weg, um Ihre Objekte serialisiert werden, kann man nicht erwarten können json_encode magisch erraten, welche Felder dürfen codiert sein.

Ein gutes Bündel, das ich für diese Aufgabe empfehle, ist JMSSerializerBundle. Lesen Sie die Dokumentation sorgfältig durch, bevor Sie sie verwenden!

Endergebnis wird wahrscheinlich so aussehen:

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

Ich habe bereits JMSSerializerBundle installiert, aber ich bekomme diesen Fehler 'Sie haben einen nicht existenten Dienst" Serializer "angefordert." Wie kann ich den Dienst für JMS – user825904

+0

deklarieren es ist nicht richtig installiert, wenn Sie diesen Fehler erhalten. – Inoryy

+0

es ist dort in jms-Anbieter und seine neueste Version – user825904

0

für späte

+0

Nun, das ist die beste einfache Methode, aber es ist nicht automatisch und erfordert die Implementierung von' __toString() '-Funktion in einer Klasse, die' json_serialize (Array (..)) 'Produkt. – Croll