API Platform + FOSUserBundle + LexikJWTAuthenticationBundle

  • Symfony: 3.2.2
  • API Platform: 2.0.3
  • FOSUserBundle: 2.0.0-beta2
  • LexikJWTAuthenticationBundle: 2.1.1

En premier lieu nous allons cloner le dépôt API Plaftorm:

Une fois fait, nous installons FOSUserBundle et LexikJWTAuthenticationBundle via composer:

Puis nous activons les bundles fraichement installé dans AppKernel.php:

Nous créons notre entité User.php:

Nous poursuivons par la génération des clés, notez bien la pass phrase qu’il faudra copié dans le fichier parameters.yml

Nous mettons a jours les fichier suivants:

config.yml:

routing.yml

security.yml

parameters.yml.dist et parameters.yml, n’oubliez pas la pass phrase pour les clés

Puis nous mettons à jour la base de données et créons notre premier utilisateur:

Pour tester ca un petit coup de Curl:

Et comme réponse nous avons:

Et voila !!!

Disponible sur github.

Vagrant et Symfony2

Suite au formatage de mon Windows et au futur formatage de mon Mac, je me suis dit qu’il serait vraiment temps de regarder du côté de Vagrant pour ne pas avoir à reconfigurer à chaque fois un nouvel environnement de travail.

Vagrant est un outil permettant de gérer facilement des machines virtuelles. Pour l’installation rien de plus simple, il faut installer VirtualBox puis Vagrant.

Afin d’avoir automatiquement la bonne version des VirtuablBox Guest, installe le plugin vagrant-vbguest en ligne de commande avec :

Dans cet article je ne parlerais que de Mac, je ferais un autre article pour Windows.

Afin d’accéder aux sites web rajouter la ligne suivant dans votre fichier hosts :

Afin d’utiliser Vagrant il nous faut créer un fichier Vagrantfile. Ce fichier est écrit en Ruby et fournit à Vagrant les informations nécessaires à la création et au provisionnement de la machine virtuelle.

Dans ce fichier Vagrantfile plusieurs choses sont importantes:

  • Les lignes 7 et 8 définissent l’image de machine virtuelle à utiliser et où la télécharger si elle n’est pas disponible sur la machine
  • Les lignes 10 et 11 permettent de rediriger les ports de la machine physique vers la machine virtuelle
  • Les lignes 13 à 16 permettent de changer les paramètres de la machine virtuelle, dans notre cas cela concerne les dns
  • La ligne 18 définit un réseau privé avec l’adresse IP de la VM
  • La ligne 19 monte le répertoire courant de la machine physique dans le répertoire /vagrant le la machine virtuelle en utilisant NFS
  • Les lignes 20 et 21 servent à configurer les droits d’accès aux fichiers
  • La ligne 23 définit quel script sera exécuté lors de l’étape de provisionnement

La ligne 23 fait référence à un fichier vagrant.sh, nous allons le voir en détail. Ce fichier va installer et configurer les différents logiciels pour notre machine virtuelle :

  • Mise à jour des paquets
  • Installation des dépendances pour la compilation d’Apache et de PHP
  • Compilation et configuration d’Apache et PHP (APC, Xdebug)
  • Installation de composer et phpMyAdmin
  • Préconfiguration de l’application Symfony2

Afin de créer la machine virtuelle, ouvrez une ligne de commande dans le dossier ou ce situe le fichier Vagrantfile puis lancez vagrant up .

Une fois la machine virtuelle créée vous pourrez vous rendre sur :

Pour exécuter des lignes de commande, utilisez vagrant ssh afin de vous connectez dans la machine virtuelle.

Et voilà. Le dépôt GitHub est à jour.

Formulaire Symfony2 et Javascript [FR]

J’ai récemment du faire face a une question lors d’un rendu de formulaire avec symfony2.

Il me fallait faire un traitement Javascript en fonction d’un choix de radio bouton. Ma première pensée a été de customiser le rendu du formulaire pour arriver à mes besoins.

Je me suis vite rendu compte qu’insérer du code Javascript customisé dans ma surcharge twig de form_row à travers le formbuilder n’était pas la bonne solution.

Dans mon cas la bonne solution fut de rendre les valeurs de mes radio boutons une à une afin qu’elles ne soient pas alignées grâce au code suivant :

Puis à l’aide de jQuery j’ai lié les événements click des radio boutons à des fonctions Javascript.

 

Ajouter un champ a un utilisateur avec le bundle sonatauserbundle [FR]

Si vous utilisez le bundle sonata-user-bundle il y a de fortes chances pour que vous ayez utilisé le bundle sonata-easy-extends afin de généré votre bundle de gestion des utilisateurs.

J’ai découvert ce weekend qu’afin d’ajouter un nouveau champ sur un utilisateur lors de l’utilisation du bundle sonatauserbundle, il faut modifier le fichier Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml

 

Le tri par défaut dans Sonata Admin

J’ai récemment dû ajouter un tri par défaut sur une de mes classes admin du bundle sonata admin. Après une petite recherche, j’ai finalement trouvé qu’il suffit de surcharger une variable:

Mes données serons dorénavant ordonnées en fonction du la valeur day dans l’ordre décroissant.