Cześć,
mam problem z wgraniem przykładowych danych do bazy danych. Używam Symfony 3.4 i FixturesBundle.
Przy próbie wgrania dostaje komunikat: "Could not find any fixture services to load."
Znalazłem podpowiedź na stackoverflow https://stackoverflow.com/questions/47613979/symfony-3-4-0-could-not-find-any-fixture-services-to-load/48049905#48049905
Pierwszy sposób nie zadziałał przy próbie zmiany implementacji na ORMFixtureInterface
Drugi sposób również (app/config/services.yml)
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false
doctrine_fixtures:
class: src/Common/UsersBundle/DataFixtures/ORM/UsersFixtures
tags: [doctrine.fixture.orm]
Dostaje błąd
"Cannot dump definition because of invalid class name ('src/Common/UsersBundle/DataFixtures/ORM/UsersFix
tures')"
Nie umiem dopasować odpowiedniej ścieżki próbowałem rożne opcje.
Common\UserBundle\DataFixtures\ORM
<?php
namespace Common\UserBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Common\UserBundle\Entity\User;
class UsersFixtures extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface{
/**
*
* @var ContainerInterface
*/
private $container;
public function getOrder() {
return 0;
}
public function setContainer(ContainerInterface $container = null) {
$this->container = $container;
}
public function load(ObjectManager $manager) {
$usersList = array(
array(
'nick' => 'tomek',
'name' => 'Tomasz',
'surname' => 'xxx',
'description' => 'xxx',
'email' => 'xxx',
'password' => 'xxxx',
'role' => 'ROLE_ADMIN',
'points' => '200'
),
);
$encoderFactory = $this->container->get('security.encoder_factory');
foreach ($usersList as $userDetails) {
$User = new User();
$password = $encoderFactory->getEncoder($User)->encodePassword($userDetails['password'], null);
$User->setUsername($userDetails['nick'])
->setName($userDetails['name'])
->setSurname($userDetails['surname'])
->setDescription($userDetails['description'])
->setEmail($userDetails['email'])
->setPoints($userDetails['points'])
->setPassword($password)
->setRoles(array($userDetails['role']))
->setEnabled(true);
$this->addReference('user-'.$userDetails['nick'], $User);
$manager->persist($User);
}
$manager->flush();
}
}