Ddeboer\DataImport\Workflow\StepAggregator::addWriter PHP Method

addWriter() public method

Add a new writer to the current workflow
public addWriter ( Ddeboer\DataImport\Writer $writer )
$writer Ddeboer\DataImport\Writer
    public function addWriter(Writer $writer)
    {
        array_push($this->writers, $writer);
        return $this;
    }

Usage Example

Beispiel #1
0
 /**
  * Import action
  *
  * @return Response
  *
  * @throws AccessDeniedException If access is not granted
  */
 public function importAction(Request $request)
 {
     if (false === $this->admin->isGranted('IMPORT')) {
         throw new AccessDeniedException();
     }
     $defaultData = array();
     $form = $this->createFormBuilder($defaultData)->add('file', 'file')->getForm();
     $form->handleRequest($request);
     $data = array();
     if ($form->isValid()) {
         $fs = new Filesystem();
         try {
             $fs->mkdir('/tmp/import');
         } catch (IOExceptionInterface $e) {
             echo "An error occurred while creating your directory at " . $e->getPath();
         }
         $form['file']->getData()->move('/tmp/import', 'data.csv');
         $file = new \SplFileObject('/tmp/import/data.csv');
         // this must be done to import CSVs where one of the data-field has CRs within!
         $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY | \SplFileObject::READ_AHEAD);
         $reader = new Reader\CsvReader($file, ';');
         $reader->setHeaderRowNumber(0);
         if ($request->request->has('btn_preview')) {
             foreach ($reader as $row) {
                 $data[] = $row;
             }
         } else {
             // Set Database into "nonchecking Foreign Keys"
             $em = $this->getDoctrine()->getManager();
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=0;");
             $writer = new DoctrineWriter($em, "AppBundle:Partner");
             $writer->setTruncate(false);
             $metadata = $em->getClassMetaData("AppBundle:Partner");
             $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
             $mapping = new Step\MappingStep();
             $mapping->map('[country_code]', '[country]');
             $mapping->map('[category]', '[partnerCategory]');
             $converter = new StringToObjectConverter($em->getRepository("AppBundle:PartnerCategory"), 'name');
             $valueConverterStep = new Step\ValueConverterStep();
             $valueConverterStep->add('[partnerCategory]', $converter);
             //                $converter = new CustomValueConverter();
             //                $converterStep = new Step\ConverterStep();
             //                $converterStep->add($converter);
             $workflow = new Workflow\StepAggregator($reader);
             $workflow->addStep($mapping);
             $workflow->addStep($valueConverterStep);
             //                $workflow->addStep($converterStep);
             $workflow->addWriter($writer);
             $workflow->process();
             // Resetting Database Check Status
             $em->getConnection()->exec("SET FOREIGN_KEY_CHECKS=1;");
         }
     }
     $formView = $form->createView();
     // set the theme for the current Admin Form
     $this->get('twig')->getExtension('form')->renderer->setTheme($formView, $this->admin->getFilterTheme());
     return $this->render('CRUD/import_partner.html.twig', array('action' => 'import', 'form' => $formView, 'data' => $data));
 }
All Usage Examples Of Ddeboer\DataImport\Workflow\StepAggregator::addWriter