Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tuto symfony2 Pas d'affichage de l'image

    9 mars 2016 à 16:44:01

    Bonjour,

    Je poursuis mon apprentissage de symfony en suivant le tuto. j'en suis arrivé au paragraphe : les relations entre les entité avec doctrine2

    J'ai voulu lier une image à mon annonce mais l'image n’apparaît pas. Elle n’apparaît pas non plus quand je consulte les queries

    Voici mon fichier AdvertController.php

    <?php

    // src/OC/PlatformBundle/Controller/AdvertController.php

    namespace OC\PlatformBundle\Controller;

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;

    use Symfony\Component\HttpFoundation\Request;

    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

    use OC\PlatformBundle\Entity\Image;

    use OC\PlatformBundle\Entity\Advert;

    class AdvertController extends Controller

    {

        public function indexAction($page)

        {

            // On ne sait pas combien de pages il y a

            // Mais on sait qu'une page doit être supérieure ou égale à 1

            if ($page < 1) {

                // On déclenche une exception NotFoundHttpException, cela va afficher

                // une page d'erreur 404 (qu'on pourra personnaliser plus tard d'ailleurs)

                throw new NotFoundHttpException('Page "'.$page.'" inexistante.');

            }

            $listAdverts = array(

                array(

                    'title'   => 'Recherche développpeur Symfony2',

                    'id'      => 1,

                    'author'  => 'Alexandre',

                    'content' => 'Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…',

                    'date'    => new \DateTime()),

                array(

                    'title'   => 'Mission de webmaster',

                    'id'      => 2,

                    'author'  => 'Hugo',

                    'content' => 'Nous recherchons un webmaster capable de maintenir notre site internet. Blabla…',

                    'date'    => new \DateTime()),

                array(

                    'title'   => 'Offre de stage webdesigner',

                    'id'      => 3,

                    'author'  => 'Mathieu',

                    'content' => 'Nous proposons un poste pour webdesigner. Blabla…',

                    'date'    => new \DateTime())

            );

            // Et modifiez le 2nd argument pour injecter notre liste

            return $this->render('OCPlatformBundle:Advert:index.html.twig', array(

                'listAdverts' => $listAdverts

            ));

        }

            public function viewAction($id)

         {

        // On récupère le repository

        $repository = $this->getDoctrine()

          ->getManager()

          ->getRepository('OCPlatformBundle:Advert')

        ;

        // On récupère l'entité correspondante à l'id $id

        $advert = $repository->find($id);

        // $advert est donc une instance de OC\PlatformBundle\Entity\Advert

        // ou null si l'id $id  n'existe pas, d'où ce if :

        if (null === $advert) {

          throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");

        }

        // Le render ne change pas, on passait avant un tableau, maintenant un objet

        return $this->render('OCPlatformBundle:Advert:view.html.twig', array(

          'advert' => $advert

        ));

      }

      public function addAction(Request $request)

      {

        // Création de l'entité Advert

        $advert = new Advert();

        $advert->setTitle('Recherche développeur Symfony2.');

        $advert->setAuthor('Alexandre');

        $advert->setContent("Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…");

        // Création de l'entité Image

        $image = new Image();

        $image->setUrl('//sdz-upload.s3.amazonaws.com/prod/upload/job-de-reve.jpg');

        $image->setAlt('Job de rêve');

        // On lie l'image à l'annonce

        $advert->setImage($image);

        // On récupère l'EntityManager

        $em = $this->getDoctrine()->getManager();

        // Étape 1 : On « persiste » l'entité

        $em->persist($advert);

        // Étape 1 bis : si on n'avait pas défini le cascade={"persist"},

        // on devrait persister à la main l'entité $image

        // $em->persist($image);

        // Étape 2 : On déclenche l'enregistrement

        $em->flush();

            // Reste de la méthode qu'on avait déjà écrit

            if ($request->isMethod('POST')) {

                $request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');

                return $this->redirect($this->generateUrl('oc_platform_view', array('id' => $advert->getId())));

            }

            return $this->render('OCPlatformBundle:Advert:add.html.twig');

        }

        public function editAction($id, Request $request)

        {

            // ...

            $advert = array(

                'title'   => 'Recherche développpeur Symfony2',

                'id'      => $id,

                'author'  => 'Alexandre',

                'content' => 'Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…',

                'date'    => new \DateTime()

            );

            return $this->render('OCPlatformBundle:Advert:edit.html.twig', array(

                'advert' => $advert

            ));

        }

        public function deleteAction($id)

        {

            // Ici, on récupérera l'annonce correspondant à $id

            // Ici, on gérera la suppression de l'annonce en question

            return $this->render('OCPlatformBundle:Advert:delete.html.twig');

        }

        public function menuAction($limit)

        {

            // On fixe en dur une liste ici, bien entendu par la suite

            // on la récupérera depuis la BDD !

            $listAdverts = array(

                array('id' => 2, 'title' => 'Recherche développeur Symfony2'),

                array('id' => 5, 'title' => 'Mission de webmaster'),

                array('id' => 9, 'title' => 'Offre de stage webdesigner')

            );

            return $this->render('OCPlatformBundle:Advert:menu.html.twig', array(

                // Tout l'intérêt est ici : le contrôleur passe

                // les variables nécessaires au template !

                'listAdverts' => $listAdverts

            ));

        }

    }

    puis mon fichier image.php

    <?php

    namespace OC\PlatformBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;

    /**

     * Image

     *

     * @ORM\Table(name="image")

     * @ORM\Entity(repositoryClass="OC\PlatformBundle\Repository\imageRepository")

     */

    class Image

    {

        /**

         * @var int

         *

         * @ORM\Column(name="id", type="integer")

         * @ORM\Id

         * @ORM\GeneratedValue(strategy="AUTO")

         */

        private $id;

        /**

         * @var string

         *

         * @ORM\Column(name="url", type="string", length=255)

         */

        private $url;

        /**

         * @var string

         *

         * @ORM\Column(name="alt", type="string", length=255)

         */

        private $alt;

        /**

         * Get id

         *

         * @return integer 

         */

        public function getId()

        {

            return $this->id;

        }

        /**

         * Set url

         *

         * @param string $url

         * @return image

         */

        public function setUrl($url)

        {

            $this->url = $url;

            return $this;

        }

        /**

         * Get url

         *

         * @return string 

         */

        public function getUrl()

        {

            return $this->url;

        }

        /**

         * Set alt

         *

         * @param string $alt

         * @return image

         */

        public function setAlt($alt)

        {

            $this->alt = $alt;

            return $this;

        }

        /**

         * Get alt

         *

         * @return string 

         */

        public function getAlt()

        {

            return $this->alt;

        }

    }

    Et pour finir mon fichier view.html.twig

    {# src/OC/PlatformBundle/Resources/view/Advert/view.html.twig #}

    {% extends "OCPlatformBundle::layout.html.twig" %}

    {% block title %}

      Lecture d'une annonce - {{ parent() }}

    {% endblock %}

    {% block ocplatform_body %}

      <h2>{{ advert.title }}</h2>

      {# On vérifie qu'une image soit bien associée à l'annonce #}

    {% if advert.image is not null %}

      <img src="{{ advert.image.url }}" alt="{{ advert.image.alt }}">

    {% endif %}

      <i>Par {{ advert.author }}, le {{ advert.date|date('d/m/Y') }}</i>

      <div class="well">

        {{ advert.content }}

      </div>

      <p>

        <a href="{{ path('oc_platform_home') }}" class="btn btn-default">

          <i class="glyphicon glyphicon-chevron-left"></i>

          Retour à la liste

        </a>

        <a href="{{ path('oc_platform_edit', {'id': advert.id}) }}" class="btn btn-default">

          <i class="glyphicon glyphicon-edit"></i>

          Modifier l'annonce

        </a>

        <a href="{{ path('oc_platform_delete', {'id': advert.id}) }}" class="btn btn-danger">

          <i class="glyphicon glyphicon-trash"></i>

          Supprimer l'annonce

        </a>

      </p>

    {% endblock %}

    J'ai zappé quelque chose mais je ne trouve pas, merci de votre aide

    Eric

    • Partager sur Facebook
    • Partager sur Twitter
      9 mars 2016 à 16:58:33

      Bonjour,

      Merci d'utiliser le bloc code </> pour afficher votre code ! 

      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2016 à 17:18:35

        Désolé, voila pour AdvertController.php
        <?php
         
        // src/OC/PlatformBundle/Controller/AdvertController.php
         
        namespace OC\PlatformBundle\Controller;
         
        use Symfony\Bundle\FrameworkBundle\Controller\Controller;
        use Symfony\Component\HttpFoundation\Request;
        use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
        use OC\PlatformBundle\Entity\Image;
        use OC\PlatformBundle\Entity\Advert;
         
        class AdvertController extends Controller
        {
            public function indexAction($page)
            {
                // On ne sait pas combien de pages il y a
                // Mais on sait qu'une page doit être supérieure ou égale à 1
                if ($page < 1) {
                    // On déclenche une exception NotFoundHttpException, cela va afficher
                    // une page d'erreur 404 (qu'on pourra personnaliser plus tard d'ailleurs)
                    throw new NotFoundHttpException('Page "'.$page.'" inexistante.');
                }
                $listAdverts = array(
                    array(
                        'title'   => 'Recherche développpeur Symfony2',
                        'id'      => 1,
                        'author'  => 'Alexandre',
                        'content' => 'Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…',
                        'date'    => new \DateTime()),
                    array(
                        'title'   => 'Mission de webmaster',
                        'id'      => 2,
                        'author'  => 'Hugo',
                        'content' => 'Nous recherchons un webmaster capable de maintenir notre site internet. Blabla…',
                        'date'    => new \DateTime()),
                    array(
                        'title'   => 'Offre de stage webdesigner',
                        'id'      => 3,
                        'author'  => 'Mathieu',
                        'content' => 'Nous proposons un poste pour webdesigner. Blabla…',
                        'date'    => new \DateTime())
                );
         
                // Et modifiez le 2nd argument pour injecter notre liste
                return $this->render('OCPlatformBundle:Advert:index.html.twig', array(
                    'listAdverts' => $listAdverts
                ));
            }
         
                public function viewAction($id)
             {
            // On récupère le repository
            $repository = $this->getDoctrine()
              ->getManager()
              ->getRepository('OCPlatformBundle:Advert')
            ;
        
            // On récupère l'entité correspondante à l'id $id
            $advert = $repository->find($id);
        
            // $advert est donc une instance de OC\PlatformBundle\Entity\Advert
            // ou null si l'id $id  n'existe pas, d'où ce if :
            if (null === $advert) {
              throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
            }
        
            // Le render ne change pas, on passait avant un tableau, maintenant un objet
            return $this->render('OCPlatformBundle:Advert:view.html.twig', array(
              'advert' => $advert
            ));
          }
          public function addAction(Request $request)
          {
            // Création de l'entité Advert
            $advert = new Advert();
            $advert->setTitle('Recherche développeur Symfony2.');
            $advert->setAuthor('Alexandre');
            $advert->setContent("Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…");
        
            // Création de l'entité Image
            $image = new Image();
            $image->setUrl('//sdz-upload.s3.amazonaws.com/prod/upload/job-de-reve.jpg');
            $image->setAlt('Job de rêve');
        
            // On lie l'image à l'annonce
            $advert->setImage($image);
         
            // On récupère l'EntityManager
            $em = $this->getDoctrine()->getManager();
        
            // Étape 1 : On « persiste » l'entité
            $em->persist($advert);
        
            // Étape 1 bis : si on n'avait pas défini le cascade={"persist"},
            // on devrait persister à la main l'entité $image
            // $em->persist($image);
        
            // Étape 2 : On déclenche l'enregistrement
            $em->flush();
         
                // Reste de la méthode qu'on avait déjà écrit
                if ($request->isMethod('POST')) {
                    $request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');
                    return $this->redirect($this->generateUrl('oc_platform_view', array('id' => $advert->getId())));
                }
         
                return $this->render('OCPlatformBundle:Advert:add.html.twig');
            }
         
            public function editAction($id, Request $request)
            {
                // ...
         
                $advert = array(
                    'title'   => 'Recherche développpeur Symfony2',
                    'id'      => $id,
                    'author'  => 'Alexandre',
                    'content' => 'Nous recherchons un développeur Symfony2 débutant sur Lyon. Blabla…',
                    'date'    => new \DateTime()
                );
         
                return $this->render('OCPlatformBundle:Advert:edit.html.twig', array(
                    'advert' => $advert
                ));
            }
         
            public function deleteAction($id)
            {
                // Ici, on récupérera l'annonce correspondant à $id
         
                // Ici, on gérera la suppression de l'annonce en question
         
                return $this->render('OCPlatformBundle:Advert:delete.html.twig');
            }
         
            public function menuAction($limit)
            {
                // On fixe en dur une liste ici, bien entendu par la suite
                // on la récupérera depuis la BDD !
                $listAdverts = array(
                    array('id' => 2, 'title' => 'Recherche développeur Symfony2'),
                    array('id' => 5, 'title' => 'Mission de webmaster'),
                    array('id' => 9, 'title' => 'Offre de stage webdesigner')
                );
         
                return $this->render('OCPlatformBundle:Advert:menu.html.twig', array(
                    // Tout l'intérêt est ici : le contrôleur passe
                    // les variables nécessaires au template !
                    'listAdverts' => $listAdverts
                ));
            }
        }

        Pour l'image.php

        <?php
        
        namespace OC\PlatformBundle\Entity;
        
        use Doctrine\ORM\Mapping as ORM;
        
        /**
         * Image
         *
         * @ORM\Table(name="image")
         * @ORM\Entity(repositoryClass="OC\PlatformBundle\Repository\imageRepository")
         */
        class Image
        {
            /**
             * @var int
             *
             * @ORM\Column(name="id", type="integer")
             * @ORM\Id
             * @ORM\GeneratedValue(strategy="AUTO")
             */
            private $id;
        
            /**
             * @var string
             *
             * @ORM\Column(name="url", type="string", length=255)
             */
            private $url;
        
            /**
             * @var string
             *
             * @ORM\Column(name="alt", type="string", length=255)
             */
            private $alt;
        
        
            /**
             * Get id
             *
             * @return integer 
             */
            public function getId()
            {
                return $this->id;
            }
        
            /**
             * Set url
             *
             * @param string $url
             * @return image
             */
            public function setUrl($url)
            {
                $this->url = $url;
        
                return $this;
            }
        
            /**
             * Get url
             *
             * @return string 
             */
            public function getUrl()
            {
                return $this->url;
            }
        
            /**
             * Set alt
             *
             * @param string $alt
             * @return image
             */
            public function setAlt($alt)
            {
                $this->alt = $alt;
        
                return $this;
            }
        
            /**
             * Get alt
             *
             * @return string 
             */
            public function getAlt()
            {
                return $this->alt;
            }
        }
        

        et pour le view.html.twig

        {# src/OC/PlatformBundle/Resources/view/Advert/view.html.twig #}
        
        {% extends "OCPlatformBundle::layout.html.twig" %}
        
        {% block title %}
          Lecture d'une annonce - {{ parent() }}
        {% endblock %}
        
        {% block ocplatform_body %}
        
          <h2>{{ advert.title }}</h2>
          
          {# On vérifie qu'une image soit bien associée à l'annonce #}
        {% if advert.image is not null %}
          <img src="{{ advert.image.url }}" alt="{{ advert.image.alt }}">
        {% endif %}
        
          <i>Par {{ advert.author }}, le {{ advert.date|date('d/m/Y') }}</i>
        
          
        
          <div class="well">
            {{ advert.content }}
          </div>
        
          <p>
            <a href="{{ path('oc_platform_home') }}" class="btn btn-default">
              <i class="glyphicon glyphicon-chevron-left"></i>
              Retour à la liste
            </a>
            <a href="{{ path('oc_platform_edit', {'id': advert.id}) }}" class="btn btn-default">
              <i class="glyphicon glyphicon-edit"></i>
              Modifier l'annonce
            </a>
            <a href="{{ path('oc_platform_delete', {'id': advert.id}) }}" class="btn btn-danger">
              <i class="glyphicon glyphicon-trash"></i>
              Supprimer l'annonce
            </a>
          </p>
        
        {% endblock %}

        Merci


        • Partager sur Facebook
        • Partager sur Twitter
          10 mars 2016 à 13:25:13

          Bonjour,

          J'ai re controler mes fichiers et ne vois toujours pas mon erreur, elle peut etre evidente mais je debute.

          si l'un d'entre vous a une idee avant de devoir reprendre le paragraphe

          merci

          eric

          • Partager sur Facebook
          • Partager sur Twitter
            30 juin 2016 à 16:10:44

            j'ai le même problème!!!!! pas de solution???? je cherche encore et encore!!!! help me!!!
            • Partager sur Facebook
            • Partager sur Twitter
              21 janvier 2018 à 13:04:08

              J'en suis là et j'ai le même problème :x
              • Partager sur Facebook
              • Partager sur Twitter
                21 janvier 2018 à 16:24:24

                Il y a bien un un cascade={"persist"} dans la définition de la relation OneToOne (entité Advert) ? Sinon il faut ajouter un $em->persist($image); dans addAction

                -
                Edité par HarvestR 21 janvier 2018 à 16:26:06

                • Partager sur Facebook
                • Partager sur Twitter
                  21 janvier 2018 à 16:42:49

                  symfony t'indique t'il une erreur ? as tu vérifié ta base de donnée? peux tu nous montrer ce que t'affiche ta page  avec une capture d'écran? 

                  -
                  Edité par YoplaHips 21 janvier 2018 à 16:45:37

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 janvier 2018 à 18:29:39

                    Bonsoir,

                    oui bien sûr, (il n'y a pas d'erreurs c'est pour cela que je bute, je ne peux pas me référer à ceux qu'ils disent)

                    alors:

                    la capture de ma page 

                    Ici normalement je devrai à ce niveau avoir une photo à côté du formulaire d'annonce

                    mes fichiers:

                    mon advertcontroller

                    <?php
                    // src/OC/PlatformBundle/Controller/AdvertController.php
                    namespace OC\PlatformBundle\Controller;
                    
                    use OC\PlatformBundle\Entity\Advert;
                    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
                    use Symfony\Component\HttpFoundation\Request;
                    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
                    use Symfony\Component\HttpFoundation\RedirectResponse;
                    
                    use OC\PlatformBundle\Entity\Image;
                    
                    
                    
                    
                    class AdvertController extends Controller
                    {
                      public function indexAction($page)
                      
                    {
                     
                        // Notre liste d'annonce en dur
                        $listAdverts = array(
                          array(
                            'title'   => 'Recherche développpeur Symfony',
                            'id'      => 1,
                            'author'  => 'Alexandre',
                            'content' => 'Nous recherchons un développeur Symfony débutant sur Lyon. Blabla…',
                            'date'    => new \Datetime()),
                          array(
                            'title'   => 'Mission de webmaster',
                            'id'      => 2,
                            'author'  => 'Hugo',
                            'content' => 'Nous recherchons un webmaster capable de maintenir notre site internet. Blabla…',
                            'date'    => new \Datetime()),
                          array(
                            'title'   => 'Offre de stage webdesigner',
                            'id'      => 3,
                            'author'  => 'Mathieu',
                            'content' => 'Nous proposons un poste pour webdesigner. Blabla…',
                            'date'    => new \Datetime())
                        );
                        return $this->render('OCPlatformBundle:Advert:index.html.twig', array(
                          'listAdverts' => $listAdverts,
                        ));
                    }
                     public function viewAction($id)
                      {
                        $em = $this->getDoctrine()->getManager();
                        // On récupère l'annonce $id
                        $advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);
                        // $advert est donc une instance de OC\PlatformBundle\Entity\Advert
                        // ou null si l'id $id n'existe pas, d'où ce if :
                        if (null === $advert) {
                          throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
                        }
                    
                    
                        return $this->render('OCPlatformBundle:Advert:view.html.twig', array(
                          'advert'           => $advert,
                        
                        ));
                      }
                    
                    
                    
                       public function addAction(Request $request)
                     {
                         // On récupère l'EntityManager
                        $em = $this->getDoctrine()->getManager();
                        // Création de l'entité
                        $advert = new Advert();
                        $advert->setTitle('Recherche développeur Symfony.');
                        $advert->setAuthor('Alexandre');
                        $advert->setContent("Nous recherchons un développeur Symfony débutant sur Lyon. Blabla…");
                        // Création de l'entité Image
                        $image = new Image();
                        $image->setUrl('//sdz-upload.s3.amazonaws.com/prod/upload/job-de-reve.jpg');
                        $image->setAlt('Job de rêve');
                        // On lie l'image à l'annonce
                        $advert->setImage($image);
                        // Création d'une première candidature
                      
                     
                        // On récupère toutes les compétences possibles
                       
                        // Pour chaque compétence
                        
                         // Étape 1 : On « persiste » l'entité
                        
                        // Étape 1 bis : si on n'avait pas défini le cascade={"persist"},
                        // on devrait persister à la main l'entité $image
                        // $em->persist($image);
                        // Étape 1 ter : pour cette relation pas de cascade lorsqu'on persiste Advert, car la relation est
                        // définie dans l'entité Application et non Advert. On doit donc tout persister à la main ici.
                    
                        // Étape 2 : On « flush » tout ce qui a été persisté avant
                        $em->flush();
                        // Reste de la méthode qu'on avait déjà écrit
                        if ($request->isMethod('POST')) {
                          $request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');
                          // Puis on redirige vers la page de visualisation de cettte annonce
                          return $this->redirectToRoute('oc_platform_view', array('id' => $advert->getId()));
                        }
                        // Si on n'est pas en POST, alors on affiche le formulaire
                        return $this->render('OCPlatformBundle:Advert:add.html.twig');
                      }
                    
                    public function editImageAction($advertId)
                    {
                      $em = $this->getDoctrine()->getManager();
                    
                      // On récupère l'annonce
                      $advert = $em->getRepository('OCPlatformBundle:Advert')->find($advertId);
                    
                      // On modifie l'URL de l'image par exemple
                      $advert->getImage()->setUrl('test.png');
                    
                      // On n'a pas besoin de persister l'annonce ni l'image.
                      // Rappelez-vous, ces entités sont automatiquement persistées car
                      // on les a récupérées depuis Doctrine lui-même
                      
                      // On déclenche la modification
                      $em->flush();
                    
                      return new Response('OK');
                    }
                      
                     
                    
                     
                    
                    
                     public function formulaireAction(Request $request)
                      {
                        // Si la requête est en POST, c'est que le visiteur a soumis le formulaire
                        if ($request->isMethod('POST')) {
                          return $this->render('OCPlatformBundle:Advert:formulaire.html.twig');
                          // Puis on redirige vers la page de visualisation de cettte annonce
                          
                        }
                        // Si on n'est pas en POST, alors on affiche le formulaire 
                        $request->getSession()->getFlashBag()->add('info', 'Formulaire non disponible.');
                       return $this->redirectToRoute('oc_platform_home');
                      }
                    
                    
                    
                    
                      public function editAction($id, Request $request)
                      {
                        $em = $this->getDoctrine()->getManager();
                        // On récupère l'annonce $id
                        $advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);
                        if (null === $advert) {
                          throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
                        }
                        // La méthode findAll retourne toutes les catégories de la base de données
                        $listCategories = $em->getRepository('OCPlatformBundle:Category')->findAll();
                        // On boucle sur les catégories pour les lier à l'annonce
                        foreach ($listCategories as $category) {
                          $advert->addCategory($category);
                        }
                        // Pour persister le changement dans la relation, il faut persister l'entité propriétaire
                        // Ici, Advert est le propriétaire, donc inutile de la persister car on l'a récupérée depuis Doctrine
                        // Étape 2 : On déclenche l'enregistrement
                        $em->flush();
                        if ($request->isMethod('POST')) {
                          $request->getSession()->getFlashBag()->add('notice', 'Annonce bien modifiée.');
                          return $this->redirectToRoute('oc_platform_view', array('id' => 5));
                        }
                        return $this->render('OCPlatformBundle:Advert:edit.html.twig', array(
                          'advert' => $advert
                        ));
                      }
                      public function deleteAction($id)
                      {
                    
                            $em = $this->getDoctrine()->getManager();
                        // On récupère l'annonce $id
                        $advert = $em->getRepository('OCPlatformBundle:Advert')->find($id);
                        if (null === $advert) {
                          throw new NotFoundHttpException("L'annonce d'id ".$id." n'existe pas.");
                        }
                        return $this->render('OCPlatformBundle:Advert:delete.html.twig');
                      }
                      public function menuAction($limit)
                      {
                        // On fixe en dur une liste ici, bien entendu par la suite on la récupérera depuis la BDD !
                        $listAdverts = array(
                          array('id' => 2, 'title' => 'Recherche développeur Symfony'),
                          array('id' => 5, 'title' => 'Mission de webmaster'),
                          array('id' => 9, 'title' => 'Offre de stage webdesigner')
                        );
                        return $this->render('OCPlatformBundle:Advert:menu.html.twig', array(
                          // Tout l'intérêt est ici : le contrôleur passe les variables nécessaires au template !
                          'listAdverts' => $listAdverts
                        ));
                      }
                    }

                    mon view

                    {# src/OC/PlatformBundle/Resources/view/Advert/view.html.twig #}
                    
                    {% extends "OCPlatformBundle::layout.html.twig" %}
                    
                    {% block title %}
                      Lecture d'une annonce - {{ parent() }}
                    {% endblock %}
                    
                    {% block ocplatform_body %}
                    
                      <div style="float: left; margin-right: 1em;">
                        {# On vérifie qu'une image soit bien associée à l'article #}
                        {% if advert.image is not null %}
                          <img src="{{ advert.image.url }}" alt="{{ advert.image.alt }}" height="60">
                        {% endif %}
                      </div>
                    
                      <h2>{{ advert.title }}</h2>
                      <i>Par {{ advert.author }}, le {{ advert.date|date('d/m/Y') }}</i>
                    
                      <div class="well">
                        {{ advert.content }}
                      </div>
                    
                    
                      <p>
                        <a href="{{ path('oc_platform_home') }}" class="btn btn-default">
                          <i class="glyphicon glyphicon-chevron-left"></i>
                          Retour à la liste
                        </a>
                        <a href="{{ path('oc_platform_edit', {'id': advert.id}) }}" class="btn btn-default">
                          <i class="glyphicon glyphicon-edit"></i>
                          Modifier l'annonce
                        </a>
                        <a href="{{ path('oc_platform_delete', {'id': advert.id}) }}" class="btn btn-danger">
                          <i class="glyphicon glyphicon-trash"></i>
                          Supprimer l'annonce
                        </a>
                      </p>
                    
                    {% endblock %}



                    -
                    Edité par CerjerPerpi 21 janvier 2018 à 18:32:52

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 janvier 2018 à 22:59:41

                      apparemment il n'y a pas d'image liée à ton annonce 

                      il se peut que tu à mal défini la variable image dans ton entité advert, peut être tu n'as pas à mis a jour ton entitéc

                      autre hypothèse, il y a peut être un problème dans le nom de ta variable qui récupère l'image  , problème de majuscule ou un s ....

                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 janvier 2018 à 9:04:07

                        ok je vais regarder ça merci et vous dis ça merci :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 juillet 2018 à 8:54:31

                          La solution est dans la table... utilisez phpMyAdmin!

                          A chaque appel de la page Add, une nouvelle ligne est crée avec une nouvelle id!

                          Ne soyez pas surpris que l'image soit enregistrée pour l'advert 6 par exemple et en voulant afficher la page advert/1 on n'ait aucune image.

                          Il faut donc supprimer des lignes de la table advert dans phpMyAdmin et changer l'id de la dernière en 1.

                          On peut aussi le faire dans la table image.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Tuto symfony2 Pas d'affichage de l'image

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown