当一个对象以小写形式引入时,如何修复 Symfony 中的“加载的类名和声明的类名之间的大小写不匹配”错误?

问题描述 投票:0回答:2

第一个 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 %}

php symfony twig
2个回答
0
投票

快速而肮脏 - 并且不知道您的实体文件:

抛出错误:

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
}

0
投票

有时在关系的输入中似乎存在错误。如果有人再次遇到此问题,请检查您的实体是否未以小写形式输入 ManyToMany 或 ManyToOne 关系。

© www.soinside.com 2019 - 2024. All rights reserved.