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.

Vue.js partie 2

Allons un peu plus loin en ajoutant un formulaire et une collection de livre.

Commençons par Vue.js. Pour ajouter un livre à une collection, il nous faut donc une collection de livre, un tableau feras l’affaire:

Afin de commencer avec de livre, nous utilisons la fonction suivante qui est appelé lors de l’instanciation de Vue.js:

Il nous reste une dernière chose a faire en Javascript, l’ajout d’un nouveau livre lors de l’envoie du formulaire. pour cela nous définissons une fonction qui vérifie que le livre que l’on veux ajouter à bien un nom, puis nous l’ajoutons a notre tableau et enfin réinitialisons le formulaire:

Passons maintenant que html. De côté là, la première chose et d’ajouter un bouton qui va faire appelle a notre fonction Javascript:

La syntaxe  v-on:click="ajouterLivre"  permet de dire à Vue.js d’invoquer la fonction ajouterLivre lors de l’événement click.

Dernière étape, afficher notre collection de livres. Pour cela nous allons itéré sur notre tableau et afficher chacun de livres en utilisant  v-for  :

Et voila, avec un peu de css vous pouvez voir ça ici.

 

Vue.js – partie 1

Pour commencer à découvrir Vue.js, voyons avec un exemple simple comment fonctionne le Twoway Binding.

Le code suivant permet de bien comprendre le Two-way Binding en action:

Commençons par le javascript, nous instancions Vue.js avec deux options:

  • el: '#livres', fournit a Vue.js sa zone de travail dans le DOM
  • data: { livre: {nom: '', commentaire: '', lu: ''} } décrit les données qui serons accessible par Vue.js dans sa zone de travail

Pour la partie html du code, deux élément aussi:

  • v-model cet attribue permet à Vue.js de faire le lien avec le modèle décris plus haut
  • la syntaxe {{livre.nom}} permet d’afficher la valeur stocké par Vue.js pour cette variable.

Pour voir ce code en action: c’est par ici.

Yosemite PHP APCu xDebug intl

Afin d’utiliser symfony2 avec la version de PHP fournit pas Yosemite, il faut rajouter quelques extensions.

Pour commencer il faut installer Xcode depuis l’App Store et ne pas oublié de l’exécuter afin d’accepter la licence d’utilisation.

Commençons par intl. En premier il nous faut les sources d’ici disponible a cette url : http://sourceforge.net/projects/icu/files/ICU4C/54.1/icu4c-54_1-src.tgz/download

Une fois fait, il faut les extraire, ouvrir un Terminal dans le dossier icu/source puis lancer les commandes suivantes :

Passons à APCu et Xdebug. Toujours dans le terminal lançons les commandes suivantes :

Dernière étape, la création et la modification du fichier php.ini

En premier lieu, copion le fichier php.ini.default

Puis modifions la valeur de « date.timezone »

Pour finir il suffit d’ajouter les lignes suivantes à la fin du fichier :

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.