Bonjour à tous,
Symfony m'indique :
"An exception has been thrown during the rendering of a template ("No mapping found for field 'option_vehicule' on class 'App\Entity\ListeOptionsVehicule'."). "
Je cherche à afficher la liste d'options pour chaque véhicule ...
Les relations ont l'air bonnes, ça métonne qu'il y ait vraiment besoin d'un mapping supplémentaire, je vois bien la propriété "listeoptionsvehicule" pour chaque vehicule dans un dump mais le tableau est curieusement vide...
Ou alors je me trompe dans la boucle du template TWIG ?
Je suppose qu'il manque un mappedBy quelque part mais étant débutant je ne sais pas comment l'implémenter...
Merci d'avance pour votre aide
listeoptionsvehicule.php:
namespace App\Entity;
use App\Repository\ListeOptionsVehiculeRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: ListeOptionsVehiculeRepository::class)]
class ListeOptionsVehicule
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'listeOptionsVehicule')]
#[ORM\JoinColumn(nullable: false)]
private ?Vehicules $vehicule = null;
#[ORM\ManyToOne(inversedBy: 'listeOptionsVehicule', cascade: ['persist', 'remove'])]
#[ORM\JoinColumn(nullable: false)]
private ?OptionsVehicules $option_vehicule = null;
public function getId(): ?int
{
return $this->id;
}
public function getVehicule(): ?Vehicules
{
return $this->vehicule;
}
public function setVehicule(?Vehicules $vehicule): self
{
$this->vehicule = $vehicule;
return $this;
}
public function getOptionVehicule(): ?OptionsVehicules
{
return $this->option_vehicule;
}
public function setOptionVehicule(?OptionsVehicules $option_vehicule): self
{
$this->option_vehicule = $option_vehicule;
return $this;
}
}```
vehicules.php:
```<?php
namespace App\Entity;
use App\Entity\Trait\CreatedAtTrait;
use App\Entity\Trait\SlugTrait;
use App\Repository\VehiculesRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: VehiculesRepository::class)]
class Vehicules
{
use CreatedAtTrait;
use SlugTrait;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\OneToMany(mappedBy: 'vehicule', targetEntity: ListeOptionsVehicule::class, orphanRemoval: true)]
private Collection $listeOptionsVehicule;
...
public function __construct()
{
$this->photos = new ArrayCollection();
$this->listeOptionsVehicule = new ArrayCollection();
$this->created_at = new \DateTimeImmutable();
$this->favoris = new ArrayCollection();
}
/**
* @return Collection<int, ListeOptionsVehicule>
*/
public function getListeOptionsVehicule(): Collection
{
return $this->listeOptionsVehicule;
}
public function addListeOptionsVehicule(ListeOptionsVehicule $listeOptionsVehicule): self
{
if (!$this->listeOptionsVehicule->contains($listeOptionsVehicule)) {
$this->listeOptionsVehicule->add($listeOptionsVehicule);
$listeOptionsVehicule->setVehicule($this);
}
return $this;
}
public function removeListeOptionsVehicule(ListeOptionsVehicule $listeOptionsVehicule): self
{
if ($this->listeOptionsVehicule->removeElement($listeOptionsVehicule)) {
// set the owning side to null (unless already changed)
if ($listeOptionsVehicule->getVehicule() === $this) {
$listeOptionsVehicule->setVehicule(null);
}
}
return $this;
}
}```
details.html.twig:
```{% extends "base.html.twig" %}
{% block title %}Détails véhicule
{% endblock %}
{% block body %}
<div class="main">
<h1 class="titre-principal">Fiche véhicule</h1>
<a class="btn btn-go-back" href="{{path('app_vehicules_liste_vehicules')}}">Revenir à la liste</a>
{{ include('_partials/_galerie-photos.html.twig') }}
{# Fiche de détails véhicule #}
...
{# Liste d'options du véhicule #}
<table class="table liste-options-vehicules">
<tbody>
{% for option in vehicule.listeOptionsVehicule %}
{{dump(option.optionvehicule)}}
{% if option %}
<tr>
<td>Option :
{{option.optionvehicule}}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% endblock %}```