Symfony2 JSON Ejemplo
Pregunta
Estoy tratando de configurar un ejemplo JSON usando Symfony2.
He creado un paquete de prueba, una entidad de prueba ("mensaje"), configurar el ORM, etc.
los Mensaje (tabla) tiene las siguientes columnas: ID, título, texto
Estoy tratando de exponer una ruta */mydomain/mensaje que exponga una interfaz JSON a la tabla de mensajes (una lista pequeña)
La primera metodología que probé fue:
Crear una clase MessageController que use Symfony\Component\HttpFoundation\Response
y tiene una función como esta:
public function testAction() {
$response = new Response(json_encode(**code_req_here**));
return $response;
}
y establecer una ruta como así:
test:
pattern: /test
defaults: { _controller: myProjectmyTestBundle:Message:test, _format: json}
requirements: { _format: (xml|json), _method: GET }
- ¿Es esta una metodología correcta?
- ¿Qué pongo en el
code_req_here
?
La segunda metodología que probé fue usando el FOS/Restbundle pero no logré completar la guía correctamente según tengo entendido, así que
- Proporcione una pequeña guía sobre cómo hacer (solo) esto con FOS/Restbundle
Solución
¿Es esta una metodología correcta?
Sí, me gusta, pero modificaría la regla de enrutamiento un poco así:
test:
pattern: /test.{_format}
defaults: { _controller: myProjectmyTestBundle:Message:test, _format: json}
requirements: { _format: (xml|json), _method: GET }
¿Qué pongo en el código_req_here?
Pon la matriz que desea convertir en formato JSON. ex. Array (array ('id' => 1, 'valor' => 'test'), array ('id' => 2, 'valor' => 'inteligente'))
Otros consejos
Recomiendo usar
http://jmsyst.com/bundles/jmsserializerbundle
$serializer = $container->get('jms_serializer');
$serializer->serialize($data, 'json'); // json|xml|yml
$data = $serializer->deserialize($inputStr, $typeName, $format);