2lenet / import-bundle
Import data from files (.csv, .xml, ...)
Installs: 5 888
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 9
Forks: 2
Type:symfony-bundle
README
Import Bundle can be used to populate entities from flat files (.csv, .xml, etc.)
- Installation
Add package your composer.json
file:
"require": { ... "2lenet/import-bundle": "^1.0" ... }
Launch composer update
to add bundle to your project:
composer update 2lenet/import-bundle
Add bundle in your app/AppKernel.php
file:
$bundles = array( ... new ClickAndMortar\ImportBundle\ClickAndMortarImportBundle(), );
- Configuration
Configure bundle with your own entities in your app/config.yml file. Example:
click_and_mortar_import: entities: customer_from_pim: model: Acme\DemoBundle\Entity\Customer repository: AcmeDemoBundle:Customer unique_key: id mappings: id: "ID" name: "Name_For_Customer" firstname: "FirstName" gender: "Sex" age: "Age" ...
You can define multiple imports for a single entity by simply changing the name of the import procedure (eg. add a new part under entities with name customer_from_ecommerce)
Options available:
- Usage
Launch import of file with command:
php app/console candm:import /path/of/your/file/customers.csv customer_from_pim
Options available:
- Extension
You can create your own reader to read other file types.
Create your class (in YourOrganizationName/YourBundle/Reader/Readers) and extends AbstractReader:
<?php namespace YourOrganizationName\YourBundle\Reader\Readers; use ClickAndMortar\ImportBundle\Reader\AbstractReader; /** * Class MyCustomXmlReader * * @package YourOrganizationName\YourBundle\Reader\Readers */ class MyCustomXmlReader extends AbstractReader { /** * Read my custom XML file and return data array * * @param string $path * * @return array */ public function read($path) { $data = array(); ... return $data; } /** * Support only xml type * * @param string $type * * @return bool */ public function support($type) { return $type == 'xml'; } }
Declare class as service (in YourOrganizationName/YourBundle/Resource/config/services.yml) and add tag clickandmortar.import.reader:
parameters: yourorganizationname.yourbundle.reader.my_custom_reader.class: YourOrganizationName\YourBundle\Reader\Readers\MyCustomXmlReader services: yourorganizationname.yourbundle.reader.my_custom_reader: class: %yourorganizationname.yourbundle.reader.my_custom_reader.class% tags: - { name: clickandmortar.import.reader }
And that's all!