Symfony Doctrine не может найти приборы для загрузки

Я начал с Symfony (3.4), и у меня есть проблемы с нагрузкой.
Когда я выполню php bin/console doctrine:fixtures:load тогда я получаю сообщение:

В строке 95 LoadDataFixturesDoctrineCommand.php:
  Не удалось найти какие-либо службы для загрузки.

Вот мой код:

~ / SRC / AppBundle / DataFixtures / ОРМ / LoadUserData.php

namespace AppBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class LoadUserData implements FixtureInterface, ContainerAwareInterface {

    private $container;

    /**
     * Load data fixtures with the passed EntityManager
     *
     * @param ObjectManager $manager
     */
    public function load(ObjectManager $manager)
    {
        $user = new User();
        $user->setLogin('admin');
        $user->setEmail('admin@admin.admin');
        $encoder = $this->container->get('security.password_encoder');
        $password = $encoder->encodePassword($user, '123qwe');
        $user->setPassword($password);

        $manager->persist();
        $manager->flush();
    }

    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }
}

~ / Приложение / Config/services.yml

    parameters:

    services:
        _defaults:
            autowire: true
            autoconfigure: true
            public: false

        AppBundle\:
            resource: '../../src/AppBundle/*'
            exclude: '../../src/AppBundle/{Entity,Repository,Tests}'

        AppBundle\Controller\:
            resource: '../../src/AppBundle/Controller'
            public: true
            tags: ['controller.service_arguments']

Благодарю.

2 ответа

Решение

В зависимости от того, какую версию светильников вы используете, вы должны расширять / реализовывать разные классы. Если версия>= 3.0, то

extend Fixture (use Doctrine\Bundle\FixturesBundle\Fixture;)

Если < 3.0

implements FixtureInterface, ContainerAwareInterface

В LoadDataFixturesDoctrineCommand.php строка 95:

Не удалось найти какие-либо службы для загрузки.

Решение: для symfony 3.4.* И doctrine-fixtures-bundle 3.0 ~ / src / YC / PlatformBundle / DataFixtures / LoadCategory.php

namespace YC\PlatformBundle\DataFixtures;

use Doctrine\Bundle\FixturesBundle\Fixture;

use Doctrine\Common\Persistence\ObjectManager;

use YC\PlatformBundle\Entity\Categorie;


class LoadCategory extends Fixture
{

  public function load(ObjectManager $manager)
  {
    $names = array(
        'Développement web',
        'Développement mobile',
        'Graphisme',
        'Integration',
        'Reseau'
    );

    foreach ($names as $name) {
        $category = new Categorie();
        $category->setName($name);
        $manager->persist($category);
    }

    $manager->flush();
  }

}

~ / SRC / YC / PlatformBundle / DataFixtures / LoadCategory.php

YC \ PlatformBundle \ DataFixtures:

    resource: '%kernel.project_dir%/src/YC/PlatformBundle/DataFixtures'
    tags: ['doctrine.fixture.orm']
Другие вопросы по тегам