Bonjour à tous, j'ai créer un formulaire est j'ai cette erreur. Can use "yield from" only with arrays and Traversables. Povez-vous m'en dire plus sur cette erreur?

2 réponses


Bonjour,
C'est assez compliqué de te répondre sans savoir ce que contient ton code.
Peux-tu montrer ton formulaire (ton fichier twig) et ce que tu as dans ton controller ?
Par ailleurs, après une petite recherche sur internet, je vois des messages qui indiquent que ce problème serait en lien avec les annotations de doctrine.
Un message indique ... "si je supprime les annotations doctrine, ça fonctionne. Sinon j'ai le message d'erreur."
La version utilisée est la 5.2 de Symfony.
Il pourrait donc s'agir d'un bug de Symfony, ... si j'ai bien compris.

merci de ta réponse, voici mon entité. Le probleme viendrai de mon entité. Un sujet similaire à etait traiter il y a pas longtemps sur les forum.

https://openclassrooms.com/forum/sujet/bug-symfony-can-use-yield-from-only-with-arrays

<?php

namespace App\Entity;

use App\Repository\PlancomptableRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**

  • @ORM\Entity(repositoryClass=PlancomptableRepository::class)
    */
    class Plancomptable
    {
    /**

    • @ORM\Id
    • @ORM\GeneratedValue
    • @ORM\Column(type="integer")
      */
      private $id;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $compte;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $compteperso;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $intitule;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $type;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $classe;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $tva;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $differe;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $sousclasse;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $sousclassedec;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $comptepremier;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $debitcredit;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $taux;

    /**

    • @ORM\ManyToOne(targetEntity=User::class)
      */
      private $user;

    /**

    • @ORM\Column(type="string", length=255, nullable=true)
      */
      private $groupe;

    public function __construct()
    {
    $this->bilans = new ArrayCollection();
    }

    public function getId(): ?int
    {
    return $this->id;
    }

    public function getCompte(): ?string
    {
    return $this->compte;
    }

    public function setCompte(?string $compte): self
    {
    $this->compte = $compte;

    return $this;

    }

    public function getCompteperso(): ?string
    {
    return $this->compteperso;
    }

    public function setCompteperso(?string $compteperso): self
    {
    $this->compteperso = $compteperso;

    return $this;

    }

    public function getIntitule(): ?string
    {
    return $this->intitule;
    }

    public function setIntitule(?string $intitule): self
    {
    $this->intitule = $intitule;

    return $this;

    }

    public function getType(): ?string
    {
    return $this->type;
    }

    public function setType(?string $type): self
    {
    $this->type = $type;

    return $this;

    }

    public function getClasse(): ?string
    {
    return $this->classe;
    }

    public function setClasse(?string $classe): self
    {
    $this->classe = $classe;

    return $this;

    }

    public function getTva(): ?string
    {
    return $this->tva;
    }

    public function setTva(?string $tva): self
    {
    $this->tva = $tva;

    return $this;

    }

    public function getDiffere(): ?string
    {
    return $this->differe;
    }

    public function setDiffere(?string $differe): self
    {
    $this->differe = $differe;

    return $this;

    }

    public function getSousclasse(): ?string
    {
    return $this->sousclasse;
    }

    public function setSousclasse(?string $sousclasse): self
    {
    $this->sousclasse = $sousclasse;

    return $this;

    }

    public function getSousclassedec(): ?string
    {
    return $this->sousclassedec;
    }

    public function setSousclassedec(?string $sousclassedec): self
    {
    $this->sousclassedec = $sousclassedec;

    return $this;

    }

    public function getComptepremier(): ?string
    {
    return $this->comptepremier;
    }

    public function setComptepremier(?string $comptepremier): self
    {
    $this->comptepremier = $comptepremier;

    return $this;

    }

    public function getDebitcredit(): ?string
    {
    return $this->debitcredit;
    }

    public function setDebitcredit(?string $debitcredit): self
    {
    $this->debitcredit = $debitcredit;

    return $this;

    }

    public function getTaux(): ?string
    {
    return $this->taux;
    }

    public function setTaux(?string $taux): self
    {
    $this->taux = $taux;

    return $this;

    }

    public function getUser(): ?user
    {
    return $this->user;
    }

    public function setUser(?user $user): self
    {
    $this->user = $user;

    return $this;

    }

    /**

    • @return Collection|Bilan[]
      */
      public function getBilans(): Collection
      {
      return $this->bilans;
      }

    public function addBilan(Bilan $bilan): self
    {
    if (!$this->bilans->contains($bilan)) {
    $this->bilans[] = $bilan;
    $bilan->setCompte($this);
    }

    return $this;

    }

    public function getGroupe(): ?string
    {
    return $this->groupe;
    }

    public function setGroupe(?string $groupe): self
    {
    $this->groupe = $groupe;

    return $this;

    }
    }

    et voici mon controleur

    <?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use App\Form\PlancomptableType;
use App\Entity\Plancomptable;

class PlancomptableGestionController extends AbstractController
{
/**

  • @Route("/plancomptablegestion", name="plancomptablegestion")
    */
    public function new(Request $request)
    {

    // recuperation de l'id de l'utulisateur 
    $user = $this->getUser();
    
    $iduser = $user->getId();
    
    $libelle = new Plancomptable();
    
    $form = $this->createForm(PlancomptableType::class, $libelle);
    
    $form->handleRequest($request);
    
    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
    
        $em->persist($libelle);
    
        $em->flush();
    
    }
    
    return $this->render('plancomptable_gestion/index.html.twig', [
        'controller_name' => 'PlancomptableGestionController',
    ]);

    }
    }