Permettre un embeddable Doctrine d'être nullable

Doctrine propose une fonctionnalité très utile pour créer des propriétés objets sur vos entité, il s'agit des embeddable. Les embeddables permette de créer des objets dont les propriétés seront stockés dans la même table que l'entité à laquelle ils appartiennent (une sorte de one-to-one dans la même...

Lire

Créer une configuration sémantique dans Symfony sans bundle

Créer une configuration sémantique dans Symfony sans bundle

Depuis quelque temps et avec l'arrivé de Flex, le découpage applicatif en bundle ne fait plus partie des bonnes pratiques Symfony. Si cela amène plus de simplicité dans le code, un des avantages des bundles était leur capacité à étendre la configuration du framework grâce au répertoire DependencyInj...

Lire

Répartir les traductions dans des fichiers différents

Répartir les traductions dans des fichiers différents

Le composant de traduction Symfony dispose d'un composant de traduction permettant de définir les traductions de vos textes dans plusieurs langues. Ces traductions seront stockées dans des fichiers (yml, xlf ou autre, par exemple messages.fr.yml). Les domaines de traductions Le composant de traducti...

Lire

Utiliser plusieurs id d'entité dans les routes sans ajouter de ParamConverter

Utiliser plusieurs id d'entité dans les routes sans ajouter de ParamConverter

Le cas simple Symfony permet, grâce aux ParamConverter, de convertir automatiquement un paramètre d'url en une autre valeur. Ce quelque chose que j'utilise beaucoup pour récupérer mes entité grâce au DoctrineParamConverter. Par défaut ce converter va associer le paramètre id d'une route avec l'entit...

Lire

Le filtre raw de Twig et SensioLabs Insight

Le filtre raw de Twig et SensioLabs Insight

Vous utilisez peut être Insight, l'outils d'analyse de code de SensioLabs. Insight est capable d'analyser une application Symfony afin de vous remonter différentes alertes tant sur les bonnes pratiques que sur la sécurité ou encore la performance de votre code. J'ai récemment été confronté à une ale...

Lire

Personnaliser la redirection après l'authentification en fonction de l'utilisateur

La configuration des firewall de Symfony permet de spécifier url de redirection en cas d'authentification réussit grâce à l'option default_target_path des form_login. Hélas vous ne pouvez pas personnaliser cette url en fonction de l'utilisateur, ce qui peux s'avérer utile si par exemple vous avez di...

Lire

Indexer les résultats de vos requêtes Doctrine

Lorsque vous faites une requête avec Doctrine, les résultats sont retournés sous forme d'un tableau. Ce tableau est indexé numériquement à partir de 0. Il peut s'avérer très utile d'indexer ce tableau de résultats d'une autre façon en utilisant par exemple l'id de l'entité ou tout autre champ unique...

Lire

Hydratez le résultat de vos requêtes Doctrine dans un DTO

Introduction Par default Doctrine vous retourne le résultat de vos requête soit dans un tableau d'entité, soit dans un tableau à plusieurs dimensions selon le mode d'hydratation que vous avez choisi (HYDRATE_OBJECT ou HYDRATE_ARRAY). L'hydratation en tableau est souvent utilisé pour des gains de per...

Lire

Utiliser des groupes de validation différents en fonction du bouton submit cliqué

Lors de la validation d'un formulaire, le besoin peut être de valider différemment les données selon le bouton cliquer lors de la soumission du formulaire. L'option validation_groups prend habituellement un tableau de groupes de validation mais accepte également une fonction de callback. Ce callback...

Lire

Filtrer le résultat d'une relation avec Doctrine 2

Il s'agit d'un problème que j'ai rencontré récemment, comment filtrer les résultats d'une relation entre deux entité. Doctrine permet de faire ça très simplement en ajoutant une condition sur une jointure. Contexte J'ai une entité Article et une entité Comment avec une relation OneToMany (Comments) ...

Lire

Personnalisez le CRUD generator de Symfony2

Introduction Symfony2 possède de base un générateur de CRUD accessible via la commande php app/console generate:doctrine:crud. Cependant le résultat obtenu, bien que fonctionnel, reste loin de ce qu'on a pu connaître avec l'admin generator de Symfony 1.4. Cette commande génère un nouveau contrôleur ...

Lire