2014-06-17 18 views
7

pracuję na Symfony2 i zaktualizowałem mój projekt z composer.phar updateSymfony2 błąd: Case niedopasowanie pomiędzy nazwami załadowanych i deklarowanej klasy:

teraz, kiedy sprawdzasz moją witrynę z app_dev.php zawsze mam ten błąd:

Case mismatch between loaded and declared class names: Blu\ProjectBun 
    dle\Entity\AccountRepository vs Blu\ProjectBundle\Entity\AccountRepos 
    itory 

To samo dotyczy wyczyszczenia pamięci podręcznej dev, ręcznie lub nie. Nie mam nic specjalnego w AccountRepository.php ..

Jakieś pomysły?

Edit: Próbowałem już dodać if ($name !== $class && 0 === strcasecmp($name, $class)) { w DebugClassLoader.php i żadnego efektu

+2

wygląda wewnątrz pliku jego napisany mały przykład -> klasa accountRepository {} –

+0

mam nic specjalnego w tym pliku –

Odpowiedz

5

Intent do var_dump ($ name) i var_dump ($ class) i strcasecmp ($ nazwa, $ class), aby zobaczyć dlaczego wchodzisz w ten stan.

+1

Dzięki, po prostu zapomniałem o skrzynce w mojej przestrzeni nazw. –

1

To znany błąd w Symfony2:

https://github.com/symfony/symfony/commit/8e9cc35

Zostało ono połączone w 2.5, ale jeszcze nie określili (source)

Aby sprawdzić, czy tak rzeczywiście jest w Twoim przypadku, możesz spróbować ręcznie zmodyfikować plik src/Symfony/Component/Debug/DebugClassLoader.php:

// Line 178 
if ($name !== $class && 0 === strcasecmp($name, $class)) { 

... i sprawdzić, czy problem nadal występuje po wyczyszczeniu pamięci podręcznej

+0

I już wypróbowałem to i zawsze mam ten błąd;) –

+0

W twoim błędzie, nie mówi "' in file_XX na linii YY' ", aby spróbować wyśledzić problem? – tchap

2

mimo że odpowiedź była literówka w przestrzeni nazw klasy, błędy te występują również, jeśli twoja jednostka jest zdefiniowana przez xml, np. User.orm.xml, i przypadkowo nazwiesz małą literę pliku, to doprowadzi do dokręcenia xml ładowarka

  1. tworzyć FooNamespace \ BarBundle \ Resources \ config \ User.orm.xml

  2. tworzyć FooNamespace \ BarBundle \ Entity \ User.php (klasa użytkownika {...})

1

proszę dodać ten warunek, jeżeli w DebugClassLoader.php plików na linii 177

if ($name === $class) { 
     if ($name !== $class && 0 === strcasecmp($name, $class)) { 
      throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: %s vs %s', $class, $name)); 
     } 
    } 

Będzie to rozwiązać Twój problem

Lokalizacja: root\Projectname\Symfony\vendor\symfony\symfony\src\Symfony\Component\Debug

dzięki

1

miałem ten problem i po wypróbowaniu wszystkich rozwiązania, które znalazłem, nikt z nich nie pracował dla mnie. Pracuję z Symfony 2.8, Doctrine ORM i Sonata Admin Bundle i ten wyjątek pojawił się po dodaniu klasy admin (dla klasy związanej z klasą pokazaną w komunikacie o wyjątku) i próbowałem ją otworzyć.

Moim błędem było pisałem nazwy tabel bazodanowych małymi literami w adnotacjach doktryny w klasie związanej, sprawdź czy masz go wielkimi literami:

ORM\ManyToOne(targetEntity="Product") 
1

Twoja nazwa kontrolera pierwsze słowo jest pisane małymi literami w routingu .yml

usr_teacher_new: 
path:  /new 
defaults: { _controller: CoreUserBundle:teacher:newteacher } 

jak nauczyciela ..

będzie T eacher

Powiązane problemy