Ошибка Symfony2: несоответствие регистра между загруженными и объявленными именами классов:
Я работаю на Symfony2 и я обновил свой проект с composer.phar update
теперь, когда я проверяю свой сайт с app_dev.php
у меня всегда есть эта ошибка :
Case mismatch between loaded and declared class names: BluProjectBun
dleEntityAccountRepository vs BluProjectBundleEntityAccountRepos
itory
это то же самое, когда я очищаю кэш dev, вручную или нет. У меня нет ничего особенного в AccountRepository.РНР..
какие идеи ?
Edit : я уже пытался добавить if ($name !== $class && 0 === strcasecmp($name, $class)) {
на DebugClassLoader.php
и никакого эффекта
6 ответов
намерение var_dump ($name) и var_dump($class) и strcasecmp($name, $class), чтобы узнать, почему вы вводите условие.
хотя ответ был опечаткой в пространстве имен класса, эти ошибки возникают также, если ваша сущность определена через xml, т. е. пользователь.ОЗР.xml, и вы случайно назовете файл в нижнем регистре, это приведет к гайкам загрузчика xml
создать FooNamespace\BarBundle\Resources\config\User.ОЗР.в XML
создать FooNamespace\BarBundle\Entity\User.php (класс User { ... })
Это известная ошибка в Symfony2 :
https://github.com/symfony/symfony/commit/8e9cc35
Он был объединен в 2.5, но еще не помечен (источник)
чтобы проверить, действительно ли это так, вы можете попробовать изменить вручную :
// Line 178
if ($name !== $class && 0 === strcasecmp($name, $class)) {
... и проверьте, если у вас все еще есть проблема после очистки кэша
пожалуйста, добавьте это, если условие в DebugClassLoader.php файл в строке 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));
}
}
это решит вашу проблему
расположение: root\Projectname\Symfony\vendor\symfony\symfony\src\Symfony\Component\Debug
спасибо
У меня была эта проблема, и после попытки всех решений, которые я нашел, никто из них не работал на меня. Я работаю с Symfony 2.8, Doctrine ORM и Sonata Admin Bundle, и это исключение появилось, когда я добавил класс admin (для класса, связанного с классом, показанным в сообщении об исключении), и я попытался его открыть.
моей ошибкой было то, что я написал имя таблиц базы данных в нижнем регистре в аннотациях доктрины в связанном классе, проверьте, есть ли у вас это в прописные:
ORM\ManyToOne(targetEntity="Product")
ваше имя контроллера первое слово в нижнем регистре в маршрутизации.в формате YML
usr_teacher_new:
path: /new
defaults: { _controller: CoreUserBundle:teacher:newteacher }
как учитель..
будет Teacher