IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

An exception has been thrown during the rendering of a template


Sujet :

PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut An exception has been thrown during the rendering of a template
    Bonjour, j'ai une erreur au niveau de mon symfony. Je voudrai :

    Dans la page par ordre alphabétique inverse de l’immatriculation, faire apparaître
    l’immatriculation, la marque, le modèle, la couleur et l’identifiant du propriétaire.

    Voici mon fichier DefaultController ( la partie qui permet de récupérer les Voitures ) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $manager=$this->getDoctrine()->getManager();
    $repositoryPersonnes=$manager->getRepository('siomembresBundle:Personnes');
    $listePersonnes=$repositoryPersonnes->findAll();
    /*$manager->persist ($personne);
    $manager->flush();*/
    $manager2=$this->getDoctrine()->getManager();
    $repositoryVoitures=$manager2->getRepository('siomembresBundle:Voitures');
    $listeVoitures=$repositoryVoitures->findAll();
     
    return $this->render('siomembresBundle:Default:index.html.twig', array('name' => $name, 'vous' => $personne, 'moi' => $voiture, 'listeP' => $listePersonnes, 'listeV' => $listeVoitures));

    Mon fichier index ( la partie qui permet d'afficher les Voiture ) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
    {%for i in listeV %}
    <li>{{ i.immatriculation}} }} {{ i.marque}}}} {{ i.modele}} }} {{ i.couleur}}}} {{ i.proprietaire}}
    {% endfor%}
    </ul>

    Une erreur apparaît :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class sio\membresBundle\Entity\Personnes could not be converted to string") in siomembresBundle:Default:index.html.twig at line 15.

    la ligne 15 du fichier index est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li>{{ i.immatriculation}} }} {{ i.marque}}}} {{ i.modele}} }} {{ i.couleur}}}} {{ i.proprietaire}}
    Pouvez-vous me venir en aide s'il vous plaît ?
    Merci de votre attention & de votre temps pour m'aider a résoudre mes problèmes

    Pour afficher les voitures par ordre alphabétique inverse de l’immatriculation je ne sais pas le faire, je pense que c'est peut être :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    findAll( array(’immatriculation’ =>’ASC’))

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je suppose que tu n'as pas définit la méthode __toString() dans ta classe correspondante. Ce qui fait que le moteur de template ne sait pas comment convertir ton objet en texte affichable.
    Dans ton cas, je suppose que c'est {{i.proprietaire}}Soit, tu définis la méthode correspondant pour convertir ton objet en un string.
    Soit, tu spécifie ce que tu veux afficher : {{i.proprietaire.prenom}} {{i.proprietaire.nom}}Cordialement,
    Patrick Kolodziejczyk.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    Merci Enormément de ton aide

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    Je pensais que mon erreur était réparé mais ce n'es pas le cas
    Mais je ne sais pas utiliser la fonction " __toString() "
    Pouvez vous m'aidez s'il vous plaît ?

    Je vous redonne mon fichier Default Controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     public function indexAction($name)
        {
    		$personne = new Personnes;
    		$personne -> setNom('SIOUNANDAM');
    		$personne -> setPrenom('Jean-Pascal');
     
    		$voiture = new Voitures;
    		$voiture -> setImmatriculation ($voiture->getImmatriculation());
    		$voiture -> setMarque('Renault');
    		$voiture -> setModele ('Clio');
    		$voiture -> setCouleur ('Bleu');
    		$voiture->setProprietaire ($personne);
     
     
    		$manager=$this->getDoctrine()->getManager();
    		$repositoryPersonnes=$manager->getRepository('siomembresBundle:Personnes');
    		$listePersonnes=$repositoryPersonnes->findAll();
    		/*$manager->persist ($personne);
    		  $manager->flush();*/
    		$manager2=$this->getDoctrine()->getManager();
    		$repositoryVoitures=$manager2->getRepository('siomembresBundle:Voitures');
    		$listeVoitures=$repositoryVoitures->findAll();
     
            return $this->render('siomembresBundle:Default:index.html.twig', array('name' => $name, 'vous' => $personne, 'moi' => $voiture, 'listeP' => $listePersonnes, 'listeV' => $listeVoitures));
        }
    Mon fichier Index ( Partie qui pose problème ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ul>
    {%for i in listeV %}
      <li> {{i.immatriculation}} {{ i.marque}}}} {{ i.modele}} }} {{ i.couleur}}}} {{ i.proprietaire}}
    {% endfor%}
      </ul>
    Et mon Erreur :

    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class sio\membresBundle\Entity\Personnes could not be converted to string") in siomembresBundle:Default:index.html.twig at line 15.
    et la ligne correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <li> {{i.immatriculation}} {{ i.marque}}}} {{ i.modele}} }} {{ i.couleur}}}} {{ i.proprietaire}}

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    La fonction __toString() est une fonction que tu as implémenté dans ta classe Personne.

    Cordialement,
    Patrick Kolodziejczyk.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    L exception
    "Catchable Fatal Error: Object of class sio\membresBundle\Entity\Personnes could not be converted to string")
    est clair, tu as une relationentre objet voiture et objet personne .

    Dans cette ligne, tu affecte au voiture une personne .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $voiture->setProprietaire ($personne);
    Du coup , lorsque tu va afficher les voitures , va contenir l'objet personne qui conserne cette voiture .
    Pour corriger il faut mettre par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ i.proprietaire.nom}}
    dans Default:index.html.twig at line 15.


    N'oubliez pas de marquer vos discussions
    Si une réponse vous a été utile pensez à voter Pour

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    d'accord

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ajout dans ta classe personne :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __toString()
        {
            return $this->nom +" "+$this->prenom;
        }
    Cependant, la prochaine fois qu'on te donne un lien vers la documentation qui explique comment résoudre ton problème. Le minimum, c'est d'aller le lire.

    Citation Envoyé par Manuel PHP
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    public string __toString ( void )
    The __toString() method allows a class to decide how it will react when it is treated like a string. For example, what echo $obj; will print. This method must return a string, as otherwise a fatal E_RECOVERABLE_ERROR level error is emitted.
    Cordialement,
    Patrick Kolodziejczyk.

    Source :
    http://php.net/manual/en/language.oo...bject.tostring

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse

  10. #10
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Test avec :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function __toString()
        {
            return "STRING EN DUR POUR OBJET PERSONNE";
        }

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    Merci

  12. #12
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Sur cette base tu n'as plus qu'à modifier le contenu de ta fonction pour afficher ce que tu veux à chaque fois que tu convertie une personne en une chaine de caractère.

    Note : Dans l'exemple que je t'avais donnée avant, j'avais mis des "+" à la place de "." comme opérateur de concaténation. Car, c'est l'opérateur de concaténation en Java et que je fais plus de Java que de PHP en ce moment.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __toString()
        {
            return $this->nom." ".$this.->prenom;
        }


    Cordialement,
    Patrick Kolodziejczyk.

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 92
    Points : 49
    Points
    49
    Par défaut
    Merci

  14. #14
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Dans ce cas, remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ i.proprietaire.proprietaire}}
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ i.proprietaire.proprietaire.id}}
    Cordialement,
    Patrick Kolodziejczyk.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2011, 16h48
  2. StandardOut has not been redirected or the process hasn't started yet.
    Par Battosaiii dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 18/07/2008, 12h33
  3. Réponses: 3
    Dernier message: 17/01/2007, 13h20
  4. Réponses: 2
    Dernier message: 27/09/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo