• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd "Could not find any fixture services to load. " Symfony 3.4 Doctrine Fixtures

0 głosów
1,167 wizyt
pytanie zadane 27 marca 2018 w PHP przez tomek923 Początkujący (480 p.)

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();
        
    }

    

}

 

1 odpowiedź

0 głosów
odpowiedź 27 marca 2018 przez Bosswell Nałogowiec (36,470 p.)
edycja 27 marca 2018 przez Bosswell
Jak się nazywa ten plik ? Ten w którym ładujesz dane.

Nazwa klasy musi odpowiadać nazwie pliku.
komentarz 27 marca 2018 przez tomek923 Początkujący (480 p.)
Oczywiście nazwa klasy i pliku jest taka sama. To chodzi chyba o jakieś zmiany w Symfony 3. Tak ładowałem pliki w symfony 2 i wszystko grało.
komentarz 27 marca 2018 przez Bosswell Nałogowiec (36,470 p.)

Usuń z usług

doctrine_fixtures:
        class: src/Common/UsersBundle/DataFixtures/ORM/UsersFixtures
        tags: [doctrine.fixture.orm]

Ta usługa zostanie zaimplementowana automatycznie. Jeżeli masz zaimplementowany FixtureInterface, a taki właśnie masz.

komentarz 27 marca 2018 przez tomek923 Początkujący (480 p.)
Po za komentowaniu mam "Could not find any fixture services to load."
komentarz 27 marca 2018 przez Bosswell Nałogowiec (36,470 p.)
edycja 27 marca 2018 przez Bosswell
Jak mniemam po tym co pisałeś. To integrowałeś Symfony 2 z Symfony 3. A to jednak duży przeskok. Może spróbuj pobawić się z upgradem composera i ewentualnie pozamienianiem ręcznie niektórych elementów.

Podobne pytania

0 głosów
2 odpowiedzi 1,895 wizyt
pytanie zadane 24 maja 2018 w PHP przez Alterwar Dyskutant (7,650 p.)
0 głosów
0 odpowiedzi 9,408 wizyt
pytanie zadane 15 października 2017 w Java przez mibdbz Gaduła (4,300 p.)

93,633 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...