Partage

insérer données d'une table dans un twig avec sf2

moteur twig

Sujet résolu
22 juin 2018 à 8:20:43

salut tous le monde !!!je travail actuellement sur un projet qui nécessite de prendre des données dans une table de bd pour les afficher ensuite sur un template twig.Mon problème se trouve sur l'affichage des données de la table après les avoir récupérer à l'aide d'un fonction.Voici la fonction qui les récupère je l'ai créer dans mon repisotory:
public function getTitle($limit = 10)
    {
        $em = $this->container->get('doctrine')->getManager();
        $qb = $em->createQueryBuilder();

        $qb->select('a')
            ->from('GhvAdminBundle:SeoAccueil', 'a')
        ->addOrderBy('a.id', 'ASC')
        ->setMaxResults($limit);
        $query = $qb->getQuery();

        $result = $query->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);

        return $result;

    }

je veut afficher les données qui seront récupérés dans ma page view\base.twig.html ,mais mon problème c'est comment on fait pour les afficher dans un boucle for de twig et les conditions qu'il faut y mettre pour les afficher selon leur index dans mon page d'accueil twig.

J'ai essayé de retourner la valeur directement et ça marche mais ce sont les condition pour les afficher selon leur ordre dans la table de ma bd qui me pose un problème: je les ai mis comme ça dans ma page mais ça me génère des erreurs (le nom de mon champ est baliseTitre):

 <title>{{ baliseTitre[0] }}</title>
        <meta {{ baliseTitre [1]}}/>
        <meta {{ baliseTitre[2] }}/>
        <meta {{ baliseTitre[3] }}/>

et voici le code qui se trouve dans mon controller pour prendre les données:

$accueil = $this->getDoctrine() ->getRepository('GhvAdminBundle:SeoAccueil')->getTitle();


 $response = $this->render('GhvHomeBundle:default:index.html.twig', array(
                'articles' => $articles,
                'baliseTitre' => $accueil[0]->getBaliseTitre(),

J'ai mis un var_dump pour tester si mes données son récupérer et elles sont bien récupérer:

var_dump($accueil[0]->getBaliseTitre());

Merci d'avance pour vos réponses.


 
    

I am programmer,I have no life...
22 juin 2018 à 16:45:49

Bonjour,

Tu dois faire une boucle twig pour afficher tes données.

{% for baliseTitre in baliseTitres %}
  {{ baliseTitre.getBaliseTitre() }}
{% endfor %}



-
Edité par eclairia 22 juin 2018 à 16:46:05

"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
23 juin 2018 à 5:47:33

Bonjour,

1. Petit conseil de développeur:

plutôt que le var_dump, teste dans ta vue twig un {{dump(baliseTitre)}}. C'est beaucoup plus efficace pour tester.

2. Pour mettre le code que tu souhaites en précisant la réponse de eclairia, :

{% for uneBaliseTitre in baliseTitre %}
{% if loop.first %}
  <title>{{ uneBaliseTitre.getBaliseTitre() }}</title>
{% else %}
  <meta {{ uneBaliseTitre.getBaliseTitre() }}/>
{% endif %}
{% endfor %}


A toi

-
Edité par CarréDas1 23 juin 2018 à 5:52:07

25 juin 2018 à 8:10:47

Merci pour vos réponses.J'appliquerai vos conseil mais et ce que vous pouvez me dire où est ce que je dois initialisez la variable uneBaliseTitre dans le code de CarréDas 1 et comment j'affecte une valeur à la variable  uneBaliseTitre!!!En attente de vos réponses.Cordialement!!!
I am programmer,I have no life...
25 juin 2018 à 19:22:56

Bonsoir,

Je pars de ton post où tu nous indiques le code suivant:

<title>{{ baliseTitre[0] }}</title>
       <meta {{ baliseTitre [1]}}/>
       <meta {{ baliseTitre[2] }}/>
       <meta {{ baliseTitre[3] }}/>

C'est à cet endroit que tu mets le code que je t'ai donné, l'affectation des variables à uneBaliseTitre est faite par la boucle for qui parcourt chacun des éléments du tableau baliseTitre, ce tableau étant envoyé par le controller comme tu l'as mentionné dans ta première question.

-
Edité par CarréDas1 25 juin 2018 à 19:23:26

27 juin 2018 à 10:11:40

Merci pour vos réponses!!!j'ai modifié mon code est ça marche maintenant!!!A très bientôt!!!
I am programmer,I have no life...

insérer données d'une table dans un twig avec sf2

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown