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

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

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

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

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

Движок для запуска фикстур (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