Saltar al contenido

Symfony @ParamConverter con MongoDB

@paramconverter con symfony y mongodb

Una de las características más usadas en Symfony es la habilidad de traducir directamente un parámetro de una petición en el objeto correspondiente. Estos objetos son inyectados como argumentos de la acción del controlador. Podemos ver un ejemplo en la propia documentación de Symfony:


use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;

/**
* @Route("/blog/{id}")
* @ParamConverter("post", class="SensioBlogBundle:Post")
*/
public function showAction(Post $post)
{
}

Internamente se llama a Doctrine y se encarga de buscar el post cuyo id corresponda al parametro pasado. ¿Que pasa si no usamos una base de datos relacional si no que queremos usar MongoDB?

MongoDB ODM y DoctrineParamConverter

Podría parecer que es una característica que falta por desarrollar para Doctrine ODM pero en realidad solo es necesario un poco de configuración para permitir reutilizar el servicio ParamConverter para que use Doctrine ODM. Necesitamos definir un servicio como el siguiente:


app.mongodb.paramconverter:
class: Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
arguments: ["@doctrine_mongodb"]
tags:
- { name: request.param_converter }

Gracias a Matthias Noback por el post original, al que solo he modificado la configuración para usar yaml en lugar de xml.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.