我正在研究Symfony2,并用composer.phar update
现在,当我用app_dev.php
检查我的网站时,我总是有这个错误:
Case mismatch between loaded and declared class names: Blu\ProjectBun
dle\Entity\AccountRepository vs Blu\ProjectBundle\Entity\AccountRepos
itory
当我清除dev缓存时,手动与否也是一样的。我在AccountRepository.php中没什么特别的。
有什么想法吗?
修改:我已尝试在if ($name !== $class && 0 === strcasecmp($name, $class)) {
中添加DebugClassLoader.php
而无效
答案 0 :(得分:6)
意图使用var_dump($ name)和var_dump($ class)以及strcasecmp($ name,$ class)来查看你输入条件的原因。
答案 1 :(得分:2)
虽然答案是类名称空间中的拼写错误,但如果您的实体是通过xml定义的,即User.orm.xml,并且您不小心将文件命名为小写,则会发生此错误,这将驱动xml加载程序
创建FooNamespace \ BarBundle \ Resources \ config \ User.orm.xml
创建FooNamespace \ BarBundle \ Entity \ User.php(类User {...})
答案 2 :(得分:1)
这是Symfony2中的已知错误:
https://github.com/symfony/symfony/commit/8e9cc35
它已合并到2.5但尚未标记(source)
要检查您是否确实如此,您可能需要尝试手动修改src/Symfony/Component/Debug/DebugClassLoader.php
文件:
// Line 178
if ($name !== $class && 0 === strcasecmp($name, $class)) {
...并检查清除缓存后是否仍有问题
答案 3 :(得分:1)
请在第177行的DebugClassLoader.php文件中添加此if条件
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
感谢
答案 4 :(得分:1)
我遇到了这个问题,在尝试了我找到的所有解决方案后,没有人为我工作。我正在使用Symfony 2.8,Doctrine ORM和Sonata Admin Bundle,当我添加一个管理类(对于与异常消息中显示的类相关的类)时出现此异常,我试图打开它。
我的错误是我在相关类中的Doctrine注释中以小写形式写了数据库表的名称,检查是否以大写形式显示:
ORM\ManyToOne(targetEntity="Product")
答案 5 :(得分:1)
您的控制器名称第一个单词在routing.yml
中是小写的usr_teacher_new:
path: /new
defaults: { _controller: CoreUserBundle:teacher:newteacher }
像老师一样..
将 T eacher