Быстрый старт

Базовые определения

Фикстура – класс, в котором описано, то как добавлять/удалять данные в бд.

Загрузчик фикстур – класс, который, позволяет загрузить одну или несколько фикстур.

Фильтр фикстур – класс, описывающий условия того, какие фикстуры должны быть использованы.

Движок для запуска фикстур (Executor) – компонент, который с помощью загрузчика фикстур загружает фикстуры, а далее с помощью фильтра получает список фикстур, которые должны быть выполнены. Далее Executor выполняет получившийся список фикстур.

Описание фикстур


return [
    'nnx_doctrine_fixture_module' => [
        // В секции fixturesLoaders описываются загрузчики фикстур
        'fixturesLoaders' => [
            //Имя цепочки загрузчиков фикстур.
            'test' => [
                //Имя загрузчика фикстур. Может быть произвольным. Нужно только для возможности переопределить конфиг в другом модуле
                'classifier' => [
                    //Плагин из \Nnx\DoctrineFixtureModule\Loader\FixtureLoaderManagerInterface
                    'name' => ClassLoader::class,
                    //Настройки для загрузчика фикстур
                    'options' => [
                        'classList' => [
                            TestModule1\FooFixture::class,
                            TestModule1\BarFixture::class,
                        ]
                    ]
                ]
            ]            
        ],
        // В секции filters описываются фильтры для фикстур
        'filters' => [
            //Имя цепочки фильтров
            'test' => [
                 //Имя фильтра фикстур. Может быть произвольным. Нужно только для возможности переопределить конфиг в другом модуле
                'chainFixtureFilter' => [
                    //Плагин из \Nnx\DoctrineFixtureModule\Filter\FixtureFilterManagerInterface
                    'name' => FilterUsedFixture::class
                ]
            ]
        ],
        //Движок для запуска фикстур (Executor)
        'executors' => [
            //Имя движка
            'test' => [
                //Имя используемого загрузчика фикстур
                'fixturesLoader' => 'testChainFixtureLoader',
                //Имя использумоего набора фильтров
                'filter' => 'testChainFixtureFilter'
            ]
        ]
    ]
];

Для начала работы с фикстурами необходимо:

  • В секции nnx_doctrine_fixture_module в разделе fixturesLoaders описать загрузчик фикстур:
    • Ключом является имя загрузчика, а значением – массив;
    • Каждый элемент массива является также массивом, описывающим конкретный загрузчик;
    • Массив, описывающий конкретный загрузчик, имеет два ключа: name (имя загрузчика) и options (настройки загрузчика);
    • Значение name – это имя плагина, зарегистрированного в плагин-менеджере \Nnx\DoctrineFixtureModule\Loader\FixtureLoaderManagerInterface;
    • Для регистрации своего загрузчика нужно добавить его в секцию nnx_fixture_loader конфига приложения.
  • Если необходимо в секции nnx_doctrine_fixture_module в разделе filters описать фильтры фикстур:
    • Ключом является имя фильтра, а значением – массив.
    • Каждый элемент массива является также массивом, описывающим конкретный фильтр;
    • Массив, описывающий конкретный фильтр, имеет два ключа: name (имя фильтра) и options (настройки фильтра);
    • Значение name – это имя плагина, зарегистрированного в плагин-менеджере \Nnx\DoctrineFixtureModule\Filter\FixtureFilterManagerInterface;
    • Для регистрации своего фильтра нужно добавить его в секцию nnx_fixture_filter конфига приложения
  • В секции nnx_doctrine_fixture_module в разделе executors описать движок для запуска фикстур (Executor):
    • Ключом является имя движка, а значением – массив;
    • В массиве для ключа fixturesLoader указывается загрузчик фикстур (должен присутствовать в секции nnx_doctrine_fixture_module в разделе fixturesLoaders);
    • Можно указать фильтр фикстур с помощью ключа filter (должен присутствовать в секции nnx_doctrine_fixture_module в разделе filters)

Для запуска фикстур необходимо выполнить консольную команду вида:

php public/index.php nnx:fixture import executor test --object-manager=doctrine.entitymanager.test'

В данном примере указывается, что нужно импортировать данные с помощью движка фикстур 'test'. В качестве object-manager'a Doctrine используется doctrine.entitymanager.test