使用make:crud生成CRUD后路由及类名大小写匹配问题求助
解决Symfony CRUD生成后的路由与类名大小写问题
错误1:No route found for "GET /demandededevis/"
- 运行
php bin/console debug:router,确认是否存在demandededevis_index、demandededevis_new等相关路由。如果没有,说明CRUD控制器的路由注解配置有误。 - 打开对应的CRUD控制器文件,检查顶部的路由注解,确保是
#[Route('/demandededevis')](或正确的路由前缀),没有拼写错误。 - 执行
php bin/console cache:clear清理缓存,避免缓存导致路由未加载。
错误2:Case mismatch between loaded and declared class names: "App\Entity\devisgaragiste" vs "App\Entity\DevisGaragiste"
- 检查实体文件命名:确保
DevisGaragiste实体的文件名为DevisGaragiste.php(首字母大写,驼峰命名),而非小写的devisgaragiste.php——PSR-4自动加载要求文件名与类名完全匹配(包括大小写)。 - 检查关联实体的引用:在关联的实体类(比如DemandeDeVis)中,确认use语句是
use App\Entity\DevisGaragiste;,关联注解的targetEntity参数也使用正确的类名,例如#[ManyToOne(targetEntity: DevisGaragiste::class)],避免出现小写的类名引用。 - 若实体是从数据库反向生成的,重新执行
php bin/console make:entity --from-database,生成时注意指定正确的驼峰类名,确保数据库表名与实体类名的映射符合规范。 - 执行
php bin/console cache:clear清除类加载缓存,确保新的类名映射生效。
关联表出现问题的原因是:关联关系涉及实体间的类引用,上述路由配置错误或类名大小写不匹配会直接影响关联实体的CRUD操作,而无关联的表没有这类引用,因此可以正常运行。
内容的提问来源于stack exchange,提问作者stan
相关产品推荐
相关产品推荐

