2 years ago
#74829
HDS_frenchguy
Can't recover attribute from object within list of object using foreach in twig - symfony
Here is an example of my object :
^ array:1 [▼
0 => App\Entity\Fichefrais {#601 ▼
-idfichefrais: "a131-202201"
-date: DateTime @1640995200 {#602 ▶}
-nbjustificatifs: null
-montantvalide: null
-datemodif: null
-idetat: Proxies\__CG__\App\Entity\Etat {#603 ▶}
-idvisiteur: Proxies\__CG__\App\Entity\Visiteur {#604 ▶}
-lignesfraishorsforfait: App\Entity\Listelignesfraishorsforfait {#622 ▼
+"0": App\Entity\Lignefraishorsforfait {#623 ▼
-idlignefraishorsforfait: 1
-libelle: "fournitures tech"
-date: DateTime @1641254400 {#624 ▶}
-montant: "7620.45"
-idfichefrais: App\Entity\Fichefrais {#625 ▶}
}
+"1": App\Entity\Lignefraishorsforfait {#629 ▼
-idlignefraishorsforfait: 2
-libelle: "location salle"
-date: DateTime @1641254400 {#630 ▶}
-montant: "720.00"
-idfichefrais: App\Entity\Fichefrais {#625 ▶}
}
}
+"ETP": App\Entity\Lignefraisforfait {#605 ▶}
+"KM": App\Entity\Lignefraisforfait {#610 ▶}
+"NUI": App\Entity\Lignefraisforfait {#614 ▶}
+"REP": App\Entity\Lignefraisforfait {#618 ▶}
}
1 => App\Entity\Fichefrais {#601 ▼
-idfichefrais: "a131-202112"
-date: DateTime @1640995200 {#602 ▶}
-nbjustificatifs: null
-montantvalide: null
-datemodif: null
-idetat: Proxies\__CG__\App\Entity\Etat {#603 ▶}
-idvisiteur: Proxies\__CG__\App\Entity\Visiteur {#604 ▶}
-lignesfraishorsforfait: null
+"ETP": App\Entity\Lignefraisforfait {#605 ▶}
+"KM": App\Entity\Lignefraisforfait {#610 ▶}
+"NUI": App\Entity\Lignefraisforfait {#614 ▶}
+"REP": App\Entity\Lignefraisforfait {#618 ▶}
}
2 => App\Entity\Fichefrais {#601 ▼
-idfichefrais: "a131-202112"
-date: DateTime @1640995200 {#602 ▶}
-nbjustificatifs: null
-montantvalide: null
-datemodif: null
-idetat: Proxies\__CG__\App\Entity\Etat {#603 ▶}
-idvisiteur: Proxies\__CG__\App\Entity\Visiteur {#604 ▶}
-lignesfraishorsforfait: App\Entity\Listelignesfraishorsforfait {#622 ▼
+"0": App\Entity\Lignefraishorsforfait {#623 ▼
-idlignefraishorsforfait: 1
-libelle: "car rent"
-date: DateTime @1641254400 {#624 ▶}
-montant: "226.45"
-idfichefrais: App\Entity\Fichefrais {#625 ▶}
}
+"1": App\Entity\Lignefraishorsforfait {#629 ▼
-idlignefraishorsforfait: 2
-libelle: "uber"
-date: DateTime @1641254400 {#630 ▶}
-montant: "46.00"
-idfichefrais: App\Entity\Fichefrais {#625 ▶}
}
+"2": App\Entity\Lignefraishorsforfait {#629 ▼
-idlignefraishorsforfait: 3
-libelle: "food"
-date: DateTime @1641254400 {#630 ▶}
-montant: "26.00"
-idfichefrais: App\Entity\Fichefrais {#625 ▶}
}
}
+"ETP": App\Entity\Lignefraisforfait {#605 ▶}
+"KM": App\Entity\Lignefraisforfait {#610 ▶}
+"NUI": App\Entity\Lignefraisforfait {#614 ▶}
+"REP": App\Entity\Lignefraisforfait {#618 ▶}
}
]
I want to use twig to print each montant
of each Lignefraishorsforfait
(n number of Lignefraishorsforfait
can exist) of each Listelignesfraishorsforfait
of each Fichefrais
if Lignefraishorsforfait
is not null in the Fichefrais
.
Here what i did so far, but it doesn't work, nothing shows up:
{% for unefichefrais in fichesfrais %}
{% if unefichefrais.lignesfraishorsforfait is null %}
{{ 0 }} €
{% else %}
{% for unelignefraishorsforfait in unefichefrais.lignesfraishorsforfait %}
{{ unelignefraishorsforfait.montant }}
{% endfor %}
{% endif %}
{% endfor %}
edit : just corrected an error in my code, but it doesn't change anything, I still have nothing showing up, but the if condition works because 0 doesn't appear... so it means that there is an attribute.
here are further classes and informations :
Fichefrais class:
<?php
namespace App\Entity;
use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\VirtualProperty;
use JMS\Serializer\Annotation\SerializedName;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* Fichefrais
*
* @ORM\Table(name="FicheFrais", uniqueConstraints={@ORM\UniqueConstraint(name="idFicheFrais", columns={"idFicheFrais"})}, indexes={@ORM\Index(name="idEtat", columns={"idEtat"}), @ORM\Index(name="idVisiteur", columns={"idVisiteur"})})
* @ORM\Entity(repositoryClass="App\Repository\FichefraisRepository")
*/
class Fichefrais
{
/**
* @var string
*
* @ORM\Column(name="idFicheFrais", type="string", length=12, nullable=false, options={"fixed"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $idfichefrais;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="date", nullable=false)
*/
private $date;
/**
* @var int|null
*
* @ORM\Column(name="nbJustificatifs", type="integer", nullable=true, options={"default"="NULL"})
*/
private $nbjustificatifs = NULL;
/**
* @var string|null
*
* @ORM\Column(name="montantValide", type="decimal", precision=10, scale=2, nullable=true, options={"default"="NULL"})
*/
private $montantvalide = 'NULL';
/**
* @var \DateTime|null
*
* @ORM\Column(name="dateModif", type="date", nullable=true, options={"default"="NULL"})
*/
private $datemodif = 'NULL';
/**
* @var \Etat
*
* @ORM\ManyToOne(targetEntity="Etat")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="idEtat", referencedColumnName="idEtat")
* })
*/
private $idetat;
/**
* @var \Visiteur
*
* @ORM\ManyToOne(targetEntity="Visiteur")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="idVisiteur", referencedColumnName="idVisiteur")
* })
*/
private $idvisiteur;
/**
* @var \Listelignesfraishorsforfait
*/
private $lignesfraishorsforfait;
public function getlignesfraishorsforfait(): ?Listelignesfraishorsforfait{
return $this->lignesfraishorsforfait;
}
/**
* Constructor
*/
public function __construct()
{
$this->idfraisforfait = new \Doctrine\Common\Collections\ArrayCollection();
}
/** TO STRING FOR ID */
public function __toString()
{
return (string) $this->getIdfichefrais();
}
public function getIdfichefrais(): ?string
{
return $this->idfichefrais;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getNbjustificatifs(): ?int
{
return $this->nbjustificatifs;
}
public function setNbjustificatifs(?int $nbjustificatifs): self
{
$this->nbjustificatifs = $nbjustificatifs;
return $this;
}
public function getMontantvalide(): ?string
{
return $this->montantvalide;
}
public function setMontantvalide(?string $montantvalide): self
{
$this->montantvalide = $montantvalide;
return $this;
}
public function getDatemodif(): ?\DateTimeInterface
{
return $this->datemodif;
}
public function setDatemodif(?\DateTimeInterface $datemodif): self
{
$this->datemodif = $datemodif;
return $this;
}
public function getIdetat(): ?Etat
{
return $this->idetat;
}
public function setIdetat(?Etat $idetat): self
{
$this->idetat = $idetat;
return $this;
}
public function getIdvisiteur(): ?Visiteur
{
return $this->idvisiteur;
}
public function setIdvisiteur(?Visiteur $idvisiteur): self
{
$this->idvisiteur = $idvisiteur;
return $this;
}
/**
* @return Collection|Fraisforfait[]
*/
public function getIdfraisforfait(): Collection
{
return $this->idfraisforfait;
}
public function addIdfraisforfait(Fraisforfait $idfraisforfait): self
{
if (!$this->idfraisforfait->contains($idfraisforfait)) {
$this->idfraisforfait[] = $idfraisforfait;
}
return $this;
}
public function removeIdfraisforfait(Fraisforfait $idfraisforfait): self
{
$this->idfraisforfait->removeElement($idfraisforfait);
return $this;
}
static function convertObjectClass($array, $final_class) {
return unserialize(sprintf('O:%d:"%s"%s', strlen($final_class), $final_class, strstr(serialize($array), ':')
));
}
}
Listelignesfraishorsforfait class:
<?php
namespace App\Entity;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use JetBrains\PhpStorm\Internal\LanguageLevelTypeAware;
use Traversable;
class Listelignesfraishorsforfait
{
public function __construct()
{
}
public function addLignefraishorsforfait(Lignefraishorsforfait $Lignefraishorsforfait)
{
$lignefraishorsforfait=$Lignefraishorsforfait->getIdlignefraishorsforfait();
$this->$lignefraishorsforfait = $Lignefraishorsforfait;
}
public function getLignefraishorsforfait(): Lignefraishorsforfait
{
return $this->Lignefraishorforfait;
}
public function setLignefraishorsforfait(Lignefraishorsforfait $Lignefraishorforfait): void
{
$this->Lignefraishorforfait = $Lignefraishorforfait;
}
public function getcount()
{
$nblignesfraishorsforfait=count((array)$this);
dump($nblignesfraishorsforfait=$nblignesfraishorsforfait-1);
return $nblignesfraishorsforfait;
}
/*public function getTotal(): int
{
foreach($this as $unelignefraisforfait){
$somme = $unelignefraisforfait->getMontant();
$montant = $montant + $somme;
}
$unelignefraisforfait=$this->convertObjectClass(
array_merge((array)$this, (array)$montant
),'App\Entity\Lignefraishorsforfait');
dump($unelignefraisforfait);
return $unelignefraisforfait;
}*/
}
Lignefraishorsforfait class:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Lignefraishorsforfait
*
* @ORM\Table(name="LigneFraisHorsForfait", indexes={@ORM\Index(name="idFicheFrais", columns={"idFicheFrais"})})
* @ORM\Entity(repositoryClass="App\Repository\LignefraishorsforfaitRepository")
*/
class Lignefraishorsforfait
{
/**
* @var int
*
* @ORM\Column(name="idLigneFraisHorsForfait", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $idlignefraishorsforfait;
/**
* @var string|null
*
* @ORM\Column(name="libelle", type="string", length=100, nullable=true, options={"default"="NULL"})
*/
private $libelle = 'NULL';
/**
* @var \DateTime|null
*
* @ORM\Column(name="date", type="date", nullable=true, options={"default"="NULL"})
*/
private $date = 'NULL';
/**
* @var string|null
*
* @ORM\Column(name="montant", type="decimal", precision=10, scale=2, nullable=true, options={"default"="NULL"})
*/
private $montant = 'NULL';
/**
* @var \Fichefrais
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Fichefrais")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="idFicheFrais", referencedColumnName="idFicheFrais")
* })
*/
private $idfichefrais;
public function getIdlignefraishorsforfait(): ?int
{
return $this->idlignefraishorsforfait;
}
public function getLibelle(): ?string
{
return $this->libelle;
}
public function setLibelle(?string $libelle): self
{
$this->libelle = $libelle;
return $this;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(?\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getMontant(): ?string
{
return $this->montant;
}
public function setMontant(?string $montant): self
{
$this->montant = $montant;
return $this;
}
public function getIdfichefrais(): ?Fichefrais
{
return $this->idfichefrais;
}
public function setIdfichefrais(?Fichefrais $idfichefrais): self
{
$this->idfichefrais = $idfichefrais;
return $this;
}
}
php
html
symfony
foreach
twig
0 Answers
Your Answer