Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Acme\UserBundle\Controller;
- use Symfony\Bundle\FrameworkBundle\Controller\Controller;
- use Symfony\Component\HttpFoundation\Response;
- use Acme\UserBundle\Entity\User;
- class ImportController extends Controller
- {
- public function importAction()
- {
- $utilisateurs = array(); // Tableau qui va contenir les éléments extraits du fichier CSV
- $row = 0; // Représente la ligne
- // Import du fichier CSV
- if (($handle = fopen(__DIR__ . "/../../../../Ressources/Utilisateurs.csv", "r")) !== FALSE) { // Lecture du fichier, à adapter
- while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { // Eléments séparés par un point-virgule, à modifier si necessaire
- $num = count($data); // Nombre d'éléments sur la ligne traitée
- $row++;
- for ($c = 0; $c < $num; $c++) {
- $utilisateurs[$row] = array(
- "nom" => $data[0],
- "prenom" => $data[1],
- "mail" => $data[2],
- "password" => $data[3]
- );
- }
- }
- fclose($handle);
- }
- $em = $this->getDoctrine()->getManager(); // EntityManager pour la base de données
- // Lecture du tableau contenant les utilisateurs et ajout dans la base de données
- foreach ($utilisateurs as $utilisateur) {
- // On crée un objet utilisateur
- $user = new User();
- // Encode le mot de passe
- $encoder = $this->container->get('security.encoder_factory')->getEncoder($user);
- $plainpassword = $utilisateur["password"];
- $password = $encoder->encodePassword($plainpassword, $user->getSalt());
- // Hydrate l'objet avec les informations provenants du fichier CSV
- $user->setPassword($password);
- $user->setNom($utilisateur["nom"]);
- $user->setPrenom($utilisateur["prenom"]);
- $user->setEmail($utilisateur["mail"]);
- // Enregistrement de l'objet en vu de son écriture dans la base de données
- $em->persist($user);
- }
- // Ecriture dans la base de données
- $em->flush();
- // Renvoi la réponse (ici affiche un simple OK pour l'exemple)
- return new Response('OK');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement