Le blog du pangolin

Accueil > Programmation > PHP > Laravel > Laravel 4 - Les données utilisateur

Laravel 4 - Les données utilisateur

dimanche 2 juin 2013, par Super Pangolin

Les données des formulaires

Les méthodes pour gérer les données des formulaires sont dans la classe « Input ».

Pour récupérer toutes les données :

  1. $data = Input::all();

On obtiendra un tableau correspondant à « $_REQUEST ».

On peut ensuite récupérer les données une par une :

  1.     $pseudo = Input::get('pseudo');

et lui affecter une valeur par défaut si elle n’a pas été postée :

  1. $animal = Input::get('animal', 'Youki');

Attention : si la valeur est vide, la valeur par défaut n’est pas affectée.

On peut vérifier la présence d’un élément ainsi :

  1. $is_animal = Input::has('animal');

On peut ne récupérer que certaines valeurs :

  1. $partie = input::only('pseudo', 'motDePasse');

Ou en exclure d’autres au contraire :

  1. $partieOpposee = input::except('pseudo', 'motDePasse');

Les cookies

Pour définir une valeur, on utilisera :

  1. $utilisateurConnecte = Cookie::make('username', $pseudo);

Si on veut que ce cookie ait une durée de vie infinie, on utilisera :

  1. $utilisateurConnecte = Cookie::forever('username', $pseudo);

Ceci génère un objet cookie symfony contenant une donnée cryptée.

Pour récupérer la valeur d’un cookie, vous aurez sûrement deviné que la syntaxe est la suivante :

  1. Cookie::get('username');

Il peut être utile de sauvegarder les données d’un formulaire en session pour la page suivante. Ceci se fait en une ligne qui génère des données « flash ». La possibilité de « flasher » des données est disponible dans la plupart des frameworks PHP et permet de ne stocker des données que d’une page à l’autre avant qu’elles soient détruites. Ceci permet d’économiser de la mémoire ainsi que de sécuriser votre application en ne laissant ces données en mémoire que le temps nécessaire.
Voici la syntaxe :

  1. Input::flash();

On peut également choisir les données à flasher :

input::flashOnly('pseudo', 'motDePasse');

ou à ne pas flasher :

input::flashExcept('pseudo', 'motDePasse');

On les retrouvera ensuite ainsi :

  1. Input::old('pseudo') ;

ou tous d’un coup :

  1. $allOld = Input::get();

Les fichiers

Pour pouvoir poster des fichiers, il faut ouvrir votre formulaire avec l’option « files » activée :

  1. {{ Form::open(array('files' => true)) }}
  2. {{ Form::file('avatar') }}
  3. {{ Form::submit() }}
  4. {{ Form::close() }}

Télécharger

La commande suivante renvoie un objet symfony qui contient les données du fichier :

  1. $objFichier = Input::file('avatar');

Résultat :

  1. object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) {
  2.  ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  3.   bool(false)
  4.   ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  5.   string(17) "Photo profile.jpg"
  6.   ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  7.   string(10) "image/jpeg"
  8.   ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  9.   int(4532)
  10.   ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
  11.   int(0)
  12.   ["pathName":"SplFileInfo":private]=>
  13.   string(28) "G:\xampp-1.8.1\tmp\phpB7.tmp"
  14.   ["fileName":"SplFileInfo":private]=>
  15.   string(9) "phpB7.tmp"
  16. }

Télécharger

Pour déplacer le fichier de son emplacement temporaire vers un autre répertoire, on utilise :

  1. Input::file('avatar')->move('/images');

Le fichier de destination garde le nom du fichier temporaire. Si le répertoire n’existe pas, il est créé.

Pour renommer le fichier par la même occasion, on ajoute son nouveau nom en deuxième argument :

   $objFichier = Input::file('avatar');
   $nomFichierOrigine = $objFichier->getClientOriginalName();
   $objFichier->move('/images', $nomFichierOrigine);

Cet exemple préserve le nom original du fichier.

Si on veut avoir l’emplacement du fichier temporaire, on utilise :

  1. $cheminFichier = Input::file('avatar')->getRealPath();

Sa taille :

  1. $tailleFichier = Input::file('avatar')->getSize();

Enfin, son type MIME :

  1. $typeFichier = Input::file('avatar')->getMimeType();

C’est tout pour l’instant. Je vous conseille de vous référer aux documentations de laravel et symfony pour plus de détail.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.