我是Symfony的初学者。我被卡住了,因为我不能调试我的电子商务应用程序。我真的不知道问题是什么。我试图显示数据库中的数据,但无论我怎么尝试,它都给我一个错误消息。
当我执行dump and die时,它输出product表中的字段,但不输出数据。(数据库中包含的名称)它会给我一个错误消息:“Symfony\ Bridge\Doctrine\ArgumentResolver\IdentyValueResolver”找不到“App\Entity\Produit”对象。当我尝试将/details替换为/{name}时,并把这个网址/产品/详细信息在搜索栏,我得到这个错误消息:变量“产品”不存在.
感谢您发送编修。
控制器
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Produit;
#[Route('/produit', name: 'produit_')]
class ProduitController extends AbstractController
{
#[Route('/', name: 'index')]
public function index(): Response
{
return $this->render('produit/index.html.twig'
);
}
#[Route('/{nom}', name: 'details')]
public function details(Produit $produit): Response
{
// dd($produit->getNom());
return $this->render('produit/details.html.twig'
);
}
}
字符串
实体
<?php
namespace App\Entity;
use App\Repository\ProduitRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: ProduitRepository::class)]
class Produit
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 100)]
private ?string $nom = null;
#[ORM\Column(type: Types::TEXT)]
private ?string $description = null;
#[ORM\Column]
private ?int $prix = null;
#[ORM\ManyToOne(inversedBy: 'produits')]
private ?Categorie $id_categorie = null;
#[ORM\OneToMany(mappedBy: 'produits', targetEntity: Images::class)]
private Collection $images;
#[ORM\OneToMany(mappedBy: 'produit', targetEntity: CommandeDetails::class)]
private Collection $commandeDetails;
public function __construct()
{
$this->commandeDetails = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNom(): ?string
{
return $this->nom;
}
public function setNom(string $nom): static
{
$this->nom = $nom;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): static
{
$this->description = $description;
return $this;
}
public function getPrix(): ?int
{
return $this->prix;
}
public function setPrix(int $prix): static
{
$this->prix = $prix;
return $this;
}
public function getIdCategorie(): ?Categorie
{
return $this->id_categorie;
}
public function setIdCategorie(?Categorie $id_categorie): static
{
$this->id_categorie = $id_categorie;
return $this;
}
/**
* @return Collection<int, Images>
*/
public function getImages(): Collection
{
return $this->images;
}
public function addImage(Images $image): static
{
if (!$this->images->contains($image)) {
$this->images->add($image);
$image->setProduits($this);
}
return $this;
}
public function removeImage(Images $image): static
{
if ($this->images->removeElement($image)) {
// set the owning side to null (unless already changed)
if ($image->getProduits() === $this) {
$image->setProduits(null);
}
}
return $this;
}
/**
* @return Collection<int, CommandeDetails>
*/
public function getCommandeDetails(): Collection
{
return $this->commandeDetails;
}
public function addCommandeDetail(CommandeDetails $commandeDetail): static
{
if (!$this->commandeDetails->contains($commandeDetail)) {
$this->commandeDetails->add($commandeDetail);
$commandeDetail->setProduit($this);
}
return $this;
}
public function removeCommandeDetail(CommandeDetails $commandeDetail): static
{
if ($this->commandeDetails->removeElement($commandeDetail)) {
// set the owning side to null (unless already changed)
if ($commandeDetail->getProduit() === $this) {
$commandeDetail->setProduit(null);
}
}
return $this;
}
}
型
树枝
{% extends 'base.html.twig' %}
{% block title %}Détails des produits{% endblock %}
{% block body %}
<h1>Details {{ produit.nom }} </h1>
{% endblock %}
型
1条答案
按热度按时间slwdgvem1#
此答案适用于“变量”产品“不存在”消息
你需要将Object传递给视图。
你可以这样做:
字符串
关于你的URL:
'details'只是你的路由的名称。你永远不会把它放在URL中。
调用你的详细信息路由的正确方法是把这个放在你的url中:
/produit/{name-of-a-product}为您提供示例/produit/Rossi
如果它告诉你该产品不存在。请验证您的数据库中是否有名称为“Rossi”的产品。