Domain Driven Design : Partie 1

Domain Driven Design c’est essentiellement une question de nommage. On nomme énormément de choses dans notre code, mais de quelle manière ? et pourquoi ?

Pour ceux qui aiment la programmation orientée objet, on modélise très vite notre model en un diagramme de classe. On donne un nom générique à chaque classe et c’est plié.

Pourtant quand on commence un nouveau projet, on nous donne un contexte, un domaine sur lequel nous reposer. Si on doit proposer un catalogue de vélo ou de voyages, on va utiliser des mots et des termes différents. Cependant, notre code lui va rester sensiblement le même.

Formulaires Symfony pour modifier vos requêtes DQL

Le titre est un peu étrange mais dans la réalité ça fonctionne !

Les formulaires Symfony sont vraiment très simple à utiliser, sûrement le composant le plus enfantin qui soit !

Petite démonstration avec le LexikFormFilterBundle qui permets d’ajouter des conditions en DQL dans vos requêtes.
Prenons le cas d’un date range. On aimerait avoir un sélecteur qui nous affiche soit un champ date qui filtrerait les résultats avec une date >= ou alors le sélecteur nous propose de choisir entre une date de début et une date de fin.

Gestion de Workflow dans un projet Symfony2 : Le workflowBundle

Parfois dans un projet on a besoin de garantir un certain enchaînement d’état dans un ordre précis, pour cela la définition d’un workflow s’impose.

Ce bundle a pour intérêt de gérer les transitions de vos objets (produit, document, information etc.) d’une étape à une autre.
En d’autre mots l’automatisation des processus au sein de votre projet et l’historisation des étapes.

OrphanRemoval et Persistance transitive avec Doctrine2

On va voir dans cet article comment supprimer automatiquement des objets qui ne sont plus référencés par leur objet parent.

Prenons l’exemple d’un objet Day qui comporte un ou plusieurs objet Event. Imaginons que nous ayons un formulaire nous permettant d’ajouter et supprimer des objets Events (dans notre formulaire un champ de type Collection) via du javascript. Si on supprime un des éléments de la collection des Event, et qu’on soumet le formulaire, Doctrine2 ne va pas supprimer l’objet tout seul alors que c’est le but souhaité.

Voyons d’abord le principe et comment résoudre ce problème:

Lorsqu’on souhaite qu’une opération soit cascadée le long d’une association, on va indiquer dans le mapping par exemple:
cascade={"persist"}

Un bundle de mise en maintenance pour vos sites avec Symfony2

Présentation

Voici le LexikMaintenanceBundle qui a pour but d’activer et désactiver la mise en maintenance de votre site. Quand un site à besoin pour X raisons d’être mis en maintenance, par exemple lors d’une mise à jour, vous allez pouvoir faire apparaître une page d’erreur où seront redirigés les visiteurs avec la possibilité d’en autoriser certains.