Advertisement
CptnRomain

Controller import CSV Symfony 3

Feb 23rd, 2016
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.05 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Acme\UserBundle\Controller;
  4.  
  5. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Acme\UserBundle\Entity\User;
  8.  
  9. class ImportController extends Controller
  10. {
  11.     public function importAction()
  12.     {  
  13.        
  14.         $utilisateurs = array(); // Tableau qui va contenir les éléments extraits du fichier CSV
  15.         $row = 0; // Représente la ligne
  16.  
  17.         // Import du fichier CSV
  18.         if (($handle = fopen(__DIR__ . "/../../../../Ressources/Utilisateurs.csv", "r")) !== FALSE) { // Lecture du fichier, à adapter
  19.             while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { // Eléments séparés par un point-virgule, à modifier si necessaire
  20.                 $num = count($data); // Nombre d'éléments sur la ligne traitée
  21.                 $row++;
  22.                 for ($c = 0; $c < $num; $c++) {
  23.                     $utilisateurs[$row] = array(
  24.                             "nom" => $data[0],
  25.                             "prenom" => $data[1],
  26.                             "mail" => $data[2],
  27.                             "password" => $data[3]
  28.                     );
  29.                 }
  30.             }
  31.             fclose($handle);
  32.            
  33.         }      
  34.        
  35.         $em = $this->getDoctrine()->getManager(); // EntityManager pour la base de données
  36.        
  37.         // Lecture du tableau contenant les utilisateurs et ajout dans la base de données
  38.         foreach ($utilisateurs as $utilisateur) {
  39.            
  40.             // On crée un objet utilisateur
  41.             $user = new User();
  42.    
  43.             // Encode le mot de passe
  44.             $encoder = $this->container->get('security.encoder_factory')->getEncoder($user);
  45.             $plainpassword = $utilisateur["password"];
  46.             $password = $encoder->encodePassword($plainpassword, $user->getSalt());
  47.            
  48.             // Hydrate l'objet avec les informations provenants du fichier CSV
  49.             $user->setPassword($password);
  50.             $user->setNom($utilisateur["nom"]);
  51.             $user->setPrenom($utilisateur["prenom"]);
  52.             $user->setEmail($utilisateur["mail"]);
  53.                
  54.             // Enregistrement de l'objet en vu de son écriture dans la base de données
  55.             $em->persist($user);
  56.            
  57.         }
  58.        
  59.         // Ecriture dans la base de données
  60.         $em->flush();
  61.        
  62.         // Renvoi la réponse (ici affiche un simple OK pour l'exemple)
  63.         return new Response('OK');
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement