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']