- Tweet
Je viens de rencontrer un problème qui peut potentiellement faire un développeur s’arracher les cheveux rapidement (j’ai commencé à le faire avant de finir par trouver la solution). Je vais vous la partager pour vous éviter ça.
En réalité c’est un bug tout bête au niveau du Paramconverter. Derrière le barbarisme param converter se cache une fonctionnalité relativement simple mais très utile: récupérer un objet dans vos contrôleurs directement à partir des champs de la requête, c’est à dire sans devoir appeler dans ce même contrôleur une fonction Doctrine ou autre pour récupérer un objet.
Pour être plus clair, rien de mieux qu’un exemple. Imaginons que dans une action de votre contrôleur, vous voulez récupérer un objet Article puis l’afficher. Sans param converter, ça donnerai quelque chose comme ceci:
Et bien avec le param converter, cela devient:
Cela fait gagner du temps, j’en suis un fervent utilisateur. Pour revenir au problème donc, sur un projet récent, j’ai voulu utiliser cette méthode, mais j’ai rencontré un message d’erreur m’indiquant en gros qu’il fallait que je fournisse un paramètre « Article » à ma route, comme si le paramconverter ne s’enclenchait pas. Ce qui était le cas. En fait, il y a eu une mise à jour malencontreuse du framework SensioFrameworkExtraBundle, celui qui gère justement les param converters, et qui a été corrigée depuis. Si vous avez téléchargé Symfony2 entre le mois d’avril et le mois de mai, il y a de fortes de chance que votre bundle soit buggé. Pour réparer cette erreur, il vous suffit simplement de mettre à jour vos bundles automatiquement en utilisant la commande suivante: