Download the PHP package teamneusta/pimcore-fixture-bundle without Composer

On this page you can find all versions of the php package teamneusta/pimcore-fixture-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package pimcore-fixture-bundle

Pimcore Fixture Bundle

Provides a way to manage and execute the loading of data fixtures in Pimcore.

It can be useful for testing purposes, or for seeding a database with initial data.

Installation

  1. Require the bundle

  2. Enable the bundle

    Add the Bundle to your config/bundles.php:

Upgrading from earlier Version

Fixtures are now considered actual services and are loaded through Dependency Injection (DI). To align with this approach, you'll need to update your Fixture classes by moving service dependencies from the create method to the constructor. If your Fixture relies on other Fixtures, implement the HasDependencies interface.

Here are the key changes:

  1. Fixture Interface Update
    The old fixture interface Neusta\Pimcore\FixtureBundle\Fixture has been replaced with Neusta\Pimcore\FixtureBundle\Fixture\Fixture. You can also extend from Neusta\Pimcore\FixtureBundle\Fixture\AbstractFixture to implement your Fixtures.

  2. Change in create Method
    The signature of the create method has been modified. It no longer takes any arguments, meaning all service dependencies must be specified via Dependency Injection. This is typically done through the constructor.

  3. Fixtures as Services
    Fixtures must be made available in the Dependency Injection container to be discovered. To do this, tag them with neusta_pimcore_fixture.fixture, or use autoconfiguration for automatic tagging.

  4. Specifying Inter-Fixture Dependencies
    If your Fixture depends on others, use the HasDependencies interface to specify these dependencies. Additional guidance is available in the section "Referencing Fixtures and Depending on Other Fixtures".

Make sure to update your Fixture classes according to these changes to ensure proper functionality and compatibility with this Bundle.

Usage

Writing Fixtures

Data fixtures are PHP service classes where you create objects and persist them to the database.

Imagine that you want to add some Product objects to your database. To do this, create a fixture class and start adding products:

Referencing Fixtures and Depending on Other Fixtures

Suppose you want to link a Product fixture to a Group fixture. To do this, you need to create a Group fixture first and keep a reference to it. Later, you can use this reference when creating the Product fixture.

This process requires the Group fixture to exist before the Product fixture. You can achieve this ordering by implementing the HasDependencies interface.

Loading Fixtures

To load fixtures in Tests, we offer the SelectiveFixtureLoader. To streamline your test setup, we recommend creating a base class with a method to load fixtures via the SelectiveFixtureLoader. Here's an example demonstrating how to implement this.

Use the base class as follows:

To load fixtures in your local environment or as part of a deployment two commands are provided:

Beware that loading a large amount of objects may lead to a high consumption of memory. Should you encounter memory issues when running the commands in dev environments you may want to try setting the environment to prod. Disabling the debug mode also seems to be beneficial in terms of memory consumption.

For example provide these options when using the symfony console:

Accessing Services from the Fixtures

As the Fixtures are just normal PHP Services you can use all DI features like constructor, setter or property injection as usual.

Extension and customization through Events

The Bundle provides the following events to facilitate extensions and customization:

  1. BeforeLoadFixtures
    This event is triggered before any fixture is executed. It contains all the fixtures that are scheduled for execution, accessible via $event->getFixtures(). You can alter the list of fixtures to be loaded by using $event->setFixtures(...).

  2. AfterLoadFixtures
    This event occurs after all relevant fixtures have been executed. It carries the fixtures that have been successfully loaded, which can be accessed through $event->loadedFixtures.

  3. BeforeExecuteFixture
    This event is triggered just before a fixture is executed. Using this event, you can prevent the execution of a specific fixture by setting $event->setPreventExecution(true).

  4. AfterExecuteFixture
    This event occurs after a fixture has been executed.

Contribution

Feel free to open issues for any bug, feature request, or other ideas.

Please remember to create an issue before creating large pull requests.

Local Development

To develop on a local machine, the vendor dependencies are required.

We use composer scripts for our main quality tools. They can be executed via the bin/composer file as well.


All versions of pimcore-fixture-bundle with dependencies

PHP Build Version
Package Version
Requires php Version ~8.1.0 || ~8.2.0
pimcore/pimcore Version ^10.5 || ^11.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package teamneusta/pimcore-fixture-bundle contains the following files

Loading the files please wait ....