Tip pour remplacer du texte facilement dans VIM équivalent au Ctrl + F

Vim est un super éditeur sur Linux, mais malheureusement les raccourcis clavier habituel tel que Crtl + F pour remplacer du texte n'existe pas. Dans ce tip j'explique la commande permettant de faire un remplacement de texte dans VIM.

Lire la suite

Symfony2: étendre globalement les options des FormType avec l'injection de dépendance (MAJ)

J'ai eu besoin de modifier les options que l'on peut passer à un Type afin de retrouver l'option help qu'il y avait dans les widgets de symfony 1. Dans cet article je vous présente comment j'ai ajouté cette option dans les Type de symfony2 sans avoir à surcharger tous les Types. Mise A Jour: grace au commentaire j'ai découvert les Forms Extension, l'article les utilise.

Lire la suite

Exemple d'utilisation du composant serializer de Symfony2: création d'un sitemap

Petite présentation du composant Serializer de Symfony2 (la version originale du framework, pas la surcharge JMS) par un exemple: la construction en dynamique d'un sitemap d'un site web.

Lire la suite

Un exemple pour enrichir la debug toolbar et le profiler de Symfony2 à l'aide du DataCollector

La debug toolbar de symfony est surement l'outil dont je ne peux plus me passer. Dans Symfony2 elle a été améliorée et on peut désormais l'étendre à l'image de Symfony2. Voici un exemple d'utilisation du DataCollector de sf2 pour ajouter des informations dans la debug toolbar et dans le profiler.

Lire la suite

Configuration de Bind9 avec wildcard et Apache2 avec VirtualHost dynamique

Je viens de refaire mon serveur de développement et j'en ai profité pour rendre sa configuration plus facile. Je travaille sur plusieurs projets et devoir configurer le DNS et le serveur apache pour chaque projet n'est pas des plus passionnant, surtout appliqué dans une entreprise avec une equipe d'une dizaine de développeurs, ou comment perdre 20 minutes. Dans cet article je vous présente la configuration que j'ai mis en place d'Apache et de Bind.

Lire la suite

Choisir l'Entity Manager lors de la déclaration du Provider dans la sécurité de Symfony2

Voici un cas particulier qui aidera peut être d'autres développeurs. J'ai une application Symfony2 avec plusieurs bases de données, plusieurs identifications et donc plusieurs Providers pour l'authentification. Dans cet article je vous présente comment choisir quel Entity Manager utiliser pour chaque Provider.

Lire la suite

Manipulation des dates et heures en PHP5 avec la classe native DateTime

Suite à l'article sur la manipulation des dates en SQL, je me suis rendu compte, qu'en fait, la manipulation de date en php n'était pas si simple et connu que ça. Il existe beaucoup de fonctions sur les dates en PHP5 et je trouve encore pas mal de code récent qui s'embrouille à essayer de calculer des dates avec des mktime, en manipulant des timestamp.... Alors qu'une class bien pratique existe: DateTime. C'est donc elle, et ses comparses, que je vais présenter.

Lire la suite

Tester unitairement les méthodes renvoyant des exceptions avec PHPUnit

De plus en plus, en PHP5, on renvoie des exceptions lorsque une erreur survient plutôt que les classique booléen true ou false. Dans cet article je vais aborder le cas des tests unitaires avec PHPUnit et comment tester les exceptions que renvoie notre code.

Lire la suite

I18nSluggableBehavior pour gérer les slugs dans une base I18n avec Propel

L'ORM Propel est livré en standard avec 2 behaviors quasi indispensables.SluggableBehavior pour générer des slugs qui seront utilisés dans les URL et I18nBehavior qui permet de gérer l'internationalisation dans la base de donnée. Dans cet article, j'explique comment et pourquoi j'ai mixé ces 2 behaviors pour créer mon behavior: I18nSluggableBehavior.

Lire la suite

Parcourir des dossiers et filtrer les fichiers n'a jamais été aussi simple avec la SPL de PHP5

Dans la Simple PHP Library (SPL pour les intimes), on trouve des classes et interfaces permettant de parcourir simplement les dossiers et fichiers. Il est même possible et très simple de créer un filtre qui permet de restreindre le résultat.

Lire la suite