2017 © Pedro Peláez
 

symfony-bundle static-data-bundle

Static Data Import for applications that need pre-defined entities with IDs

image

forci/static-data-bundle

Static Data Import for applications that need pre-defined entities with IDs

  • Monday, April 16, 2018
  • by grigoryosifov
  • Repository
  • 2 Watchers
  • 0 Stars
  • 498 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 135 % Grown

The README.md

Installation

composer require forci/static-data-bundle, (*1)

Add the bundle to your bundles array, (*2)

new \Forci\Bundle\StaticData\ForciStaticDataBundle(),

Configure your bundles. These are the bundles that have StaticData that needs to be imported, (*3)

forci_static_data:
    bundles:
        - App
        # Note: Your bundle can be configured as a string or full-blown config.
        # You can also specify your entity manager if not "default" or if you have many
        # For advanced usage, please refer to the Configuration file of this bundle.
        - Api
        -
           bundle: Frontend
           # Note: When looking up classes, this bundle converts slashes to namespace separators
           directory: Some/Directory
           em: some_other_em
        - Admin

The Static Data bundle will look into each bundle's configured directory (StaticData by default) and pick all *Data.php files. Then, if there is a service with an ID equal to the FQCN, or if the class is a subclass of Forci\Bundle\StaticData\StaticData\StaticData, it will be constructed and added to a ``Forci\Bundle\StaticData\StaticData\DataCollection`. Note, that this only happens on-demand and will NOT slow down your application's performance besides having to load another bundle and process its configs., (*4)

Usage

By default, you need to place your StaticData files in BundleRootDir/StaticData. Take a look at the below example for a bundle named App (Please notice the missing Bundle suffix! if you're using it, you need to specify the full bundle name in your config, eg AppBundle), (*5)

<?php

// src/App/StaticData/RoleData.php

namespace App\StaticData;

use App\Entity\Role;
use Forci\Bundle\StaticData\StaticData\StaticData;

class RoleData extends StaticData {

    public function doLoad() {
        $records = [
            Role::ID_ADMINISTRATOR => [
                'name' => 'Administrator',
                'role' => 'ROLE_ADMIN'
            ],
            Role::ID_TRANSLATOR => [
                'name' => 'Translator',
                'role' => 'ROLE_TRANSLATOR'
            ],
        ];

        foreach ($records as $id => $role) {
            if (!$this->find(Role::class, $id)) {
                $entity = new Role();
                $entity->setId($id);
                $entity->setName($role['name']);
                $entity->setRole($role['role']);
                $this->persist($entity);
            }
        }
    }
}

All you need to do is run the ./bin/console forci_static_data:load command. You can also add this command to your deployment flow. This way, adding new static entities is a breeze. This is especially useful when development happens by multiple developers, in multiple different branches and you want to keep migrations clean. Having multiple branches and doing refactoring in these often leads to unexpected crashes upon deployment to production due to the way DoctrineMigrationsBundle works., (*6)

If you would like to import the static data for only one bundle, run ./bin/console forci_static_data:load -b YourBundle or ./bin/console forci_static_data:load --bundle=YourBundle, (*7)

Advanced Usage

This bundle registers two services: - forci_static_data.data_finder - instance of Forci\Bundle\StaticData\StaticData\DataFinder - forci_static_data.data_loader - instance of Forci\Bundle\StaticData\StaticData\DataLoader, (*8)

You can use those to find and/or load your static data in any way you would like - you can embed it in your own commands., (*9)

The Versions

16/04 2018

dev-master

9999999-dev

Static Data Import for applications that need pre-defined entities with IDs

  Sources   Download

MIT

The Requires

 

The Development Requires

by Martin Kirilov

symfony fixture wucdbm static data forci

16/04 2018

v0.3.0

0.3.0.0

Static Data Import for applications that need pre-defined entities with IDs

  Sources   Download

MIT

The Requires

 

The Development Requires

by Martin Kirilov

symfony fixture wucdbm static data forci

14/02 2018

v0.2.0

0.2.0.0

Static Data Import for applications that need pre-defined entities with IDs

  Sources   Download

MIT

The Requires

 

The Development Requires

by Martin Kirilov

symfony fixture wucdbm static data forci

14/02 2018

v0.1.1

0.1.1.0

Static Data Import for applications that need pre-defined entities with IDs

  Sources   Download

MIT

The Requires

 

The Development Requires

by Martin Kirilov

symfony fixture wucdbm static data forci

20/01 2018

v0.1.0

0.1.0.0

Static Data Import for applications that need pre-defined entities with IDs

  Sources   Download

MIT

The Requires

 

The Development Requires

by Martin Kirilov

symfony fixture wucdbm static data forci