You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 6表单报错:变量ajouterNouveauProjet不存在求助

Symfony 6:变量"ajouterNouveauProjet"不存在问题排查

报错信息

Variable "ajouterNouveauProjet" does not exist.

Controller代码

<?php

namespace App\Controller;

use App\Entity\Projet;
use App\Form\ProjetFormType;
use Doctrine\ORM\EntityManagerInterface;
use phpDocumentor\Reflection\Types\This;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class LandingPageController extends AbstractController
{
    #[Route('/landingPage', name: 'app_landing_page')]
    public function index(): Response
    {
        return $this->render('landing_page/index.html.twig', [
            'controller_name' => 'LandingPageController',
        ]);
    }
    #[Route('/projet', name: 'projet')]
    public function projet(Request $request, EntityManagerInterface $em, ): Response
    {
        //On créé un nouveau produit
        $projet = new Projet();

        $addProjetForm = $this->createForm(ProjetFormType::class, $projet);

        return $this->render('landing_page/projet.html.twig', [
            'ajouterNouveauProjet' => $addProjetForm->createView(),
        ]);

    }
}

视图代码(projet.html.twig)

{% extends 'base.html.twig' %}

{% block title %}Projet{% endblock %}

{% block body %}

    {% include "landing_page/_menuDashboard.html.twig" %}


    <form class=" box " method="post">

        <h1 class="title is-1">Mes projets</h1>

        {{ form_start(ajouterNouveauProjet) }}

        <div class="columns">

            <div class="column">

                {{ form_row(ajouterNouveauProjet.raisonSociale,
                    {
                        label: 'Raison Sociale',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.activite,
                    {
                        label: 'Activité',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.responsable,
                    {
                        label: 'Responsable',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.formeJuridique,
                    {
                        label: 'Forme Juridique',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.typeJuridique,
                    {
                        label: 'Type juridique',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.mail,
                    {
                        label: 'Adresse E-mail',
                        attr: {class: 'input form-control'}
                    })
                }}

            </div>

            <div class="column">

                {{ form_row(ajouterNouveauProjet.capital,
                    {
                        label: 'Capital',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.adresse,
                    {
                        label: 'Adresse',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.codePostal,
                    {
                        label: 'Code Postal',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.ville,
                    {
                        label: 'Ville',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.telephone,
                    {
                        label: 'Téléphone',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.siret,
                    {
                        label: 'SIRET',
                        attr: {class: 'input form-control'}
                    })
                }}

                {{ form_row(ajouterNouveauProjet.naf,
                    {
                        label: 'NAF',
                        attr: {class: 'input form-control'}
                    })
                }}

            </div>

        </div>

        <button type="submit" class="button is-info">Valider</button>

        {{ form_end(ajouterNouveauProjet) }}

    </form>

{% endblock %}

排查建议

  • 确认路由访问正确性:确保访问的是/projet路由(对应name为projet的Action),若误访问/landingPage,视图不会收到目标变量。
  • 清理缓存:Symfony缓存可能导致旧代码未更新,执行命令:
    php bin/console cache:clear
    php bin/console cache:clear --env=prod # 生产环境
    
  • 检查模板路径与文件名:确认projet.html.twig位于templates/landing_page/目录下,文件名拼写完全一致(Linux系统区分大小写)。
  • 排查包含模板的影响:暂时注释掉{% include "landing_page/_menuDashboard.html.twig" %},验证是否因该模板错误导致变量无法正常传递。
  • 验证表单创建逻辑:在控制器中添加dump($addProjetForm->createView()); die;,检查是否成功生成表单视图;同时确认ProjetFormType类无语法错误。
  • 修复控制器参数冗余:projet方法参数末尾的多余逗号(EntityManagerInterface $em,)虽不违反语法,但可能引发解析异常,去掉后重新测试。

内容的提问来源于stack exchange,提问作者HyperVince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:17:24