第一个 symfony 项目,我尝试制作一个类似 imdb 的网站。当我通过 parm 转换器路由中实例化对象的链接从一个页面 (season_show) 转到另一个页面 (episode_show) 时,我的一个对象以小写形式引入,创建“加载的类名和声明的类名之间的大小写不匹配:”App\Entity\程序”与“应用程序\实体\程序”。错误。 我已经尝试将项目中出现的所有小写“program”设置为 Program,但它不起作用。有人知道如何纠正它吗?
<?php
// src/Controller/ProgramController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use App\Repository\ProgramRepository;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Program;
use App\Entity\Season;
use App\Entity\Episode;
#[Route('/program', name: 'program_')]
Class ProgramController extends AbstractController
{
#[Route('{programId}/seasons/{seasonId}', name: 'season_show')]
public function showSeason(Season $season, Program $Program,Episode $episode): Response
{
$episodes = $season->getEpisodes();
return $this->render('program/season_show.html.twig', [
'Program' => $Program,
'season' => $season,
'episodes' => $episodes
]);
}
#[Route('{program}/seasons/{season}/episode/{episode}', name: 'episode_show')]
public function showEpisode (Program $Program,Season $season, Episode $episode): Response{
return $this->render('program/episode_show.html.twig',[
'Program' => $Program,
'season' => $season,
'episode' => $episode
]);
}
}
season_show.html.twig
{% extends 'base.html.twig' %}
{% block title %}Série {{ program.title }}, saison {{ season.number }}{% endblock %}
{% block body %}
<div class="media">
<img class="align-self-start mr-3" src="{{ program.poster }}" alt="{{ program.title }} poster">
<div class="media-body">
<h1 class="mt-0">{{ program.title }} saison {{ season.number }}</h1>
<p>{{ program.synopsis }}</p>
<p>Catégorie : {{ program.Category.name }}</p>
<p>Saison : {{ season.number }}</p>
<p>{{ episode.title }}</p>
<p>{{ episode.synopsis }}</p>
</div>
</div>
<a href="{{ path('program_index') }}">
Retour à la liste des programmes
</a>
{% endblock %}
快速而肮脏 - 并且不知道您的实体文件:
抛出错误:
Case mismatch between loaded and declared class name
,因为您的实体文件名是小写 - program.php
并且您的类名是Program
,或者您的文件名是正确的Program.php
并且您的类名是小写。
请查看Symfony 编码标准(命名约定) 以了解有关 symfony 命名策略的更多信息。这使您将来可以更轻松地调试和阅读应用程序代码。
顺便说一句,您的路线中的查询参数不正确,您的函数应该如下所示:
#[Route('{programId}/seasons/{seasonId}', name: 'season_show')]
public function showSeason($programId = null, $seasonId = null): Response
{
//your stuff here
}
有时在关系的输入中似乎存在错误。如果有人再次遇到此问题,请检查您的实体是否未以小写形式输入 ManyToMany 或 ManyToOne 关系。