Bonjours à tous,
Je travaille sur un projet qui me demande de lister un champ (Mysql) en colonne et non sur une seule ligne. Malheureusement je ne suis pas encore suffisament familier avec Symfony 2 pour le faire.
Merci d'avance
Version imprimable
Bonjours à tous,
Je travaille sur un projet qui me demande de lister un champ (Mysql) en colonne et non sur une seule ligne. Malheureusement je ne suis pas encore suffisament familier avec Symfony 2 pour le faire.
Merci d'avance
Salut,
Je pense qu'il te suffit de récupérer la valeur de ton champ et ensuite d'utiliser l'explode du PHP :)
Bonne soirée.
Est-ce possible dans une page twig
C'est possible, mais il me semble que c'est mieux à faire dans le contrôleur (plutôt même le modèle, si tu veux faire du propre).
Je vous montre le code je ne comprends pas bien alors si vous avez une solution pour moi...
Code:
1
2
3
4
5 $em = $this->getDoctrine()->getEntityManager(); $entities = $em->getRepository('AdminVocabulaireBundle:voc')->findAll(); $exp = explode(' ',$entities); return array('entities' => $exp);
Ha oui effectivement tu as rater quelques trucs :)
Tu devrais relire ce passage de la documentation de twig :
http://www.twig-project.org/doc/templates.html#for
Ou un exemple plus complet :
http://www.dobervich.com/2011/03/15/...ing-doctrine2/
Ton $entitites est déjà un objet contenant toutes les lignes. Tu n'as donc pas besoin de l'explode tout va bien se faire dans ton template.
Si je comprends bien
devrait faire l'affaire, mais cela ne fonctionne pas...Code:
1
2
3
4
5
6 <h1>Members</h1> <ul> {% for user in users %} <li>{{ user.username|e }}</li> {% endfor %} </ul>
merci encore de vos précieux conseils
Il n'y a aucun message d'erreur seulement je n'arrive pas à faire une colonne à la place d'une ligne...
j'obtiens ce la:
Aujourd'hui demain hier jamais tranquillement petit demain progressivement
mais je veux cela
Aujourd'hui
demain
hier
jamais
tranquillement
petit
demain
progressivement
merci encore
Et tout cela provient d'un seul et même champ dans un seul et même enregistrement dans ta base de données, c'est bien ça ? Dans ce cas, explode(' ', $var) suffira. Mais le code que tu as montré ne représente pas ça : là, tu récupères tous les enregistrements de la table.
Sans ORM, quelle requête effectuerais-tu sur la table ? Quel est son schéma (plutôt la définition de l'entité, vu que c'est avec ça que tu devras travailler) ?
Voici le code dans l'entité
Code:
1
2
3
4
5
6 /** * @var string $mots * * @ORM\Column(name="mots", type="string", length=500) */ private $mots;
je connais la requête en php mais avec symfony je suis un peu perdu pour récupérer les données et les afficher(le generateur fait tout sans probleme) sauf un explode... :)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 /** * Set mots * * @param string $mots */ public function setMots($mots) { $this->mots = $mots; } /** * Get mots * * @return string */ public function getMots() { return $this->mots; }
J'aurais donc plutôt fait ça ($id étant l'identifiant de l'enregistrement que tu veux) :
Par contre, je te rappelle la première forme normale des bases de données, qui contient notamment le principe d'atomicité de l'information ;) ! http://sqlpro.developpez.com/cours/standards/#L2.2.Code:
1
2
3
4 $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('AdminVocabulaireBundle:voc')->findOneBy($id); return array('entities' => explode(' ', $entity));
Merci,
Mais j'ai encore un souci
voici: l'erreur
Notice: Undefined variable: id in C:\wamp\www\Admin\src\Admin\PublicBundle\Controller\PublicController.php line 77
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /** * @Route("/vocabulaire", name="devoirs_voc") * @Template() */ public function vocabulaireAction() { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('AdminVocabulaireBundle:voc')->findOneBy($id); return array('entities' => explode(' ', $entity)); }
Le id c'est ok mais ça ne fonctionne pas
Quel id veux-tu ? Il suffit de remplacer $id par ça. Tu peux aussi le récupérer en paramètre d'une route.
Si tu as bien une ligne en base par ligne que tu veux ce qui a l'air d'être le cas d'après ton post d'après.
C'est plus un soucis de html que de symfony.
Code:
1
2
3
4 <h1>Members</h1> {% for user in users %} {{ user.username|e }}br /> {% endfor %}
ou
Code:
1
2
3
4 <h1>Members</h1> {% for user in users %} <div>{{ user.username|e }}</div> {% endfor %}
J'ai mis dans mon controller le code que tu m'as donnée. Mais l'erreur
Notice: Undefined variable: id in C:\wamp\www\Admin\src\Admin\PublicBundle\Controller\PublicController.php line 77
500 Internal Server Error - ErrorException
apparait...je ne comprends pas..
PS je demande à mon controller PublicBundle d'aller chercher entity dans AdminVocabulaireBundle est-ce le problème.. Mais je ne crois pas puisque je peux afficher les données sauf qu'elles ne sont pas en colonne.
merci je sais que je demande beaucoup j'espère pouvoir donner un de ces jours
Le problème est pourtant simple : tu utilises une variable qui n'existe pas. Il faut donc la définir d'une manière ou d'une autre. Là, nous ne pouvons pas te présenter du code à copier-coller, ce que tu sembles vouloir, en tant que bon débutant qui souhaite absolument une solution sans même chercher à comprendre, pour venir ensuite venir pleurer sur les forums pour obtenir une autre solution toute faite et prête à copier-coller, sans jamais rien apprendre, en restant entièrement dépendant des autre, il faut absolument que tu saches de quel enregistrement tu veux les données. Sans ça, tu auras toujours ce warning. Si tu les veux tous, alors il va falloir ajouter une boucle pour itérer sur tous les éléments, explode()er tout ça et mettre le tout dans un tableau (voir l'excellent http://sylvie-vauthier.developpez.co...rand-debutant/).
En réalité je sais très facilement faire un explode avec php brute. Par contre je ne comprends pas bien symfony et les différents bundle et surtout doctrine que je n'utilise qu'avec la console. Jusqu'à présent je n'avait pas besoin d'aide mais pour ce problème particulier je ne trouve pas de solution ni dans la documentation de symfony 2 ni dans celle de Doctrine. Alors désolée d'avoir abusé de ton temps...
PS la variable existe dans l'entité AdminVocabulaireBundle:voc
Mais mon bundle AdminPublicBundle ne la voit pas.. Comme j'ai dit dans un autre post si je faisCode:
1
2
3
4
5
6
7
8
9 /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id;
aucun problème je vois les mots en ligne...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /** * @Route("/vocabulaire", name="devoirs_voc") * @Template() */ public function vocabulaireAction() { $em = $this->getDoctrine()->getEntityManager(); $entity = $em->getRepository('AdminVocabulaireBundle:Voc')->findall(); return array('entities' => $entity); }
Est-ce que le problème est facile à résoudre surement mais je ne vois pas pour l'instant...
Alors je suis désolé encore une fois et merci à ceux qui voudront bien me répondre...