Symfony 3.4.0 N'a pas trouvé de services d'installation à charger

j'utilise Symfony 3.4.0, j'essaie de charger les fixtures avec:

php bin/console doctrine:fixtures:load

une erreur s'est produite lors de la création des données, qu'est-ce qui ne va pas?

enter image description here

15
demandé sur zatamine 2017-12-03 03:17:39

9 réponses

Cette commande recherche tous les services taggés avec doctrine.fixture.orm.

Il y a deux façons de résoudre ce problème.

premier: toute classe qui implémente ORMFixtureInterface sera automatiquement enregistré avec cette balise.

<?php

namespace AppBundle\DataFixtures\ORM;


use Doctrine\Bundle\FixturesBundle\ORMFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;

class LoadFixtures implements ORMFixtureInterface
{
    public function load(ObjectManager $manager)
    {
        #your code
    }
}

Deuxième: vous devez marquer manuellement doctrine.fixture.ormDataFixturessevice.yml configuration.

services:
    ...

    # makes classes in src/AppBundle/DataFixtures available to be used as services
    # and have a tag that allows actions to type-hint services
    AppBundle\DataFixtures\:
        resource: '../../src/AppBundle/DataFixtures'
        tags: ['doctrine.fixture.orm']
24
répondu GuRu 2018-01-01 13:15:40

j'ai essayé la solution de @Alexander mais ça ne marche pas pour moi.

j'avais résolu le même problème en ajoutant le service d'étiquette à la classe, Symfony doc sur le services.yml le fichier bundle:

BlogBundle/Resources/config/services.yml

Services:
...
# Fixtures services
    BlogBundle\DataFixtures\ORM\PostFixture:
        tags: [doctrine.fixture.orm]
...

Mon BlogBundle/DataFixtures/ORM/PostFixture.php catégorie :

...
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
...

class PostFixture implements FixtureInterface
{
public function load(ObjectManager $manager)
    {
...
}
}

Source D'Inspiration:Synfony doc -> conteneur -> L'auto-configurer l'Option

Espère que ce sera une solution de rechange

7
répondu zatamine 2017-12-03 22:05:48

exemple pour paquet réutilisable.

src/Acme/Bundle/UserBundle/DataFixtures/ORM / DataFixtures.php

<?php 
namespace Acme\Bundle\UserBundle\DataFixtures\ORM;

use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;

class DataFixtures extends Fixture
{
    /**
     * Load data fixtures with the passed EntityManager
     *
     * @param ObjectManager $manager
     */
    public function load(ObjectManager $manager)
    {
       #your code
    }
}

dans app/config / services.yml

Acme\Bundle\UserBundle\DataFixtures\:
     resource: '../../src/Acme/Bundle/UserBundle/DataFixtures/'

ajouter les données de vos fixtures:

php bin/console doctrine:fixtures:load --append
3
répondu mshv 2018-01-10 08:13:16

~/dev/domaine.lan/src/ProductBundle/DataFixtures/ORM / ProductFixture.php

<?php

namespace ProductBundle\DataFixtures\ORM;

use Doctrine\Bundle\FixturesBundle\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use ProductBundle\Entity\Product;

class ProductFixture implements FixtureInterface
{

    public function load(ObjectManager $manager)
    {
       // create 20 products! Bam!
       for ($i = 0; $i < 20; $i++) {
           $product = new Product();
           $product->setName('Product name' . $i);
           $manager->persist($product);
       }

       $manager->flush();
    }
}

le problème est résolu il était nécessaire d'ajouter un service: (app/config/services.yml)

services:
    # Product service
    ProductBundle\:
        resource: '../../src/ProductBundle/*'
        exclude: '../../src/ProductBundle/{Entity,Repository,Tests}'
2
répondu Alexander 2017-12-03 12:04:29

Use Doctrine\Bundle\FixturesBundle\Fixture

classe de produit fixtfixture extends Fixture implements FixtureInterface

voir la documentation:http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

1
répondu Ivor Szaniszló 2017-12-04 08:41:43

dans 4.0.1 je dois implémenter la configuration de service pour afficher Symfony mon dossier DataFixtures:

dans config / services.yaml

services:

    ...

    App\DataFixtures\:
        resource: '../src/DataFixtures'
        tags: [doctrine.fixture.orm]

si ma classe implémente FixtureInterface et sans cette config si elle étend Fixture

1
répondu Dmitry 2017-12-06 11:38:23

après de longues recherches, j'ai trouvé une solution. Ce travail avec :

  • doctrine / doctrine-fixtures-bundle: ^3.0,
  • Symfony ^3.3

Premier

  • Définissez votre appareil.
<?php
namespace Where\MyFixtureBundle\FileFolder\IsLocated;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Nao\UserBundle\Entity\User;

class LoadData implements FixtureInterface
{
    /**
     * Load data fixtures with the passed EntityManager
     *
     * @param ObjectManager $manager
     */
    public function load(ObjectManager $manager){
        $object = new Entity();
        $object->setFoo(bar)
        ...

        $manager->persist($object);

        $manager->flush();
    }
}

ensuite, définissez un service dans le service de bundle.fichier yml ou directement dans "app/config/services.yml" (pas de recommandé)

# Fixtures service
your_service.name:
    class: Full\Namespce\With\TheClassFixtureName
    tags: [doctrine.fixture.orm] <-- important

N'oubliez pas, juste pour être sûr que le suivant

composer du -o or composer dump-autoload -o

essayez d'exécuter votre commande maintenant pour charger vos fixtures de données.

0
répondu Spartacvs1 2018-01-08 08:00:54

j'ai aussi dû mettre à jour l'app/Appel.php et ajouté le tableau suivant:

new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle()
0
répondu bananaCute 2018-06-24 12:35:39

après avoir lu le commentaire ci-dessus, j'ai trouvé la solution à l'intérieur de la réponse de @GuRu :

"Deuxième: Vous devez manuellement la balise de la doctrine.luminaire.orm à DataFixtures à sevice.configuration yml".

puis implémente ORMFixtureInterface dans votre classe fixtures.

. en fait, nous devons ajouter une configuration supplémentaire à l'intérieur des services.yml pour le résoudre. Important à savoir, je remarque ce problème dans la version ~ 3.4 de symfony.

Best respect

0
répondu Diskary 2018-09-29 13:43:29