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

Symfony PHP Discussion :

Comment personnaliser le rendu d'un formulaire symfony?


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut Comment personnaliser le rendu d'un formulaire symfony?
    Bonjour,j'ai deux entités avec une relation ManyToOne et donc voila j'aimerai personnaliser le rendu du formulaire en accédant à tous les labels et les widgets respectifs de l'entité inverse en fait le formulaire devra être un tableau,j'ai déjà consulté un sujet similaire à ceci mais je n'ai pas bien compris alors si quelqu'un pourrait m'aider,s'il vous plait,ce sera vraiment un grand aide merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut quelques modifs sont nécéssaires...
    Salut,

    Petit exemple avec ManyToOne sur une table categories et table produits clef étrangère (id_categorie)
    IL faut déclarer les setter getter et l'id de la categorie dans la classe produits dans :
    MyNameSpace\MyBundle\Entity\Produit.php

    Après la génération de mon entity Produit via CLI :

    php app/console doctrine:generate:entities

    Tu modifie ton object Produit qui a été généré dans ton bundle dans :
    MyNameSpace\MyBundle\Entity\Produit.php

    Code PHP : 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
    26
    27
    28
    29
    30
    31
     
       /**
         * @ORM\ManyToOne(targetEntity="Categorie")
         */
        private $Categorie;
        private $categorie_id;
     
        /**
         * @return mixed
         */
        public function getCategorie(){
            return $this->Categorie;
        }
     
        /**
         * @param $categorie
         */
        public function setCategorie($categorie){
            $this->Categorie = $categorie;
     
            return $this;
        }
     
     
     
        /**
         * @return mixed
         */
        public function getCategorie_id(){
            return $this->categorie_id;
        }



    Le defaultController du bundle sur lequel tu bosse *.php
    Observe bien le add('categorie' ...
    Code php : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    namespace MyNameSpace\MyBundle\Controller;
     
    use MyNameSpace\MyBundle\Entity\Categorie;
    use MyNameSpace\MyBundle\Entity\Produit;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\Fram Exemple avec ManyToOne
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use Symfony\Component\BrowserKit\Request;
     
    class DefaultController extends Controller
    {
        /**
         * @Route("/addProduit")
         * @Template()
         */
        public function addProduitAction(\Symfony\Component\HttpFoundation\Request $request)
        {
            $p = new Produit();
            $form = $this->createFormBuilder($p)
                ->add('nomProduit', 'text')
                ->add('prix', 'text')
                ->add('categorie', 'entity', array(
                    'class' => 'MyNameSpace\MyBundle\Entity\Categorie',
                    'property' => 'nomCategorie'
                ))
                ->add('Add', 'submit')
                ->getForm();
            $form->handleRequest($request);
     
            if($form->isValid()){
                $em = $this->getDoctrine()->getManager();
                $em->persist($p);
                $em->flush();
            }
     
            $produits =  $this->getDoctrine()->getRepository("MyNameSPaceMyBundle:Produit")->findAll();
     
     
            return array('f' => $form->createView(), 'prods' => $produits);
        }
     
    ...

    fait un update du mapping de doctrine :

    php app/console doctrine:schema:update

    Pour la vue il suffit de créer la vue de l'action que l'on a créé dans le defaultController, exemple avec twig


    Code PHP : 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
    26
    27
    28
    29
    30
    31
     
    {% extends '::base.html.twig' %}
    {% block body %}
        {{ form_start(f) }}
        <ul style="list-style:none;">
            <li>
                 <ul style="list-style:none;">
                     <li>{{ form_label(f.nomProduit) }}</li>
                     <li>{{ form_widget(f.nomProduit) }}</li>
                     <li>{{ form_errors(f.nomProduit) }}</li>
                 </ul>
            </li>
            <li>
                 <ul style="list-style:none;">
                     <li>{{ form_label(f.prix) }}</li>
                     <li>{{ form_widget(f.prix) }}</li>
                     <li>{{ form_errors(f.prix) }}</li>
                 </ul>
            </li>
            <li>
                 <ul style="list-style:none;">
                     <li>{{ form_label(f.categorie) }}</li>
                     <li>{{ form_widget(f.categorie) }}</li>
                     <li>{{ form_errors(f.categorie) }}</li>
                 </ul>
            </li>
        </ul>
        {{ form_end(f) }}
        </br></br>
        {% include '@DwmCatalog/Default/listProduits.html.twig' %}
        <script>

    Je pense que c'est tout, en espérant que c'est claire pour toi, bonne journée.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut
    Salut headmax
    merci beaucoup pour ta réponse mais ça ne règle pas encore mon problème,en fait le type de mon champ,ici équivalent à categories,est collection et non pas entity et je voudrais avoir accès aux labels et les widgets que contient la data-prototype et les personnaliser après je ne sais pas si tu vois où ce que je veux en venir bonne journée

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/08/2014, 22h02
  2. Comment personnaliser un formulaire?
    Par AmFaye2 dans le forum Odoo (ex-OpenERP)
    Réponses: 10
    Dernier message: 22/06/2013, 01h44
  3. Réponses: 9
    Dernier message: 16/05/2013, 10h04
  4. [Access 2003]Comment personnaliser un formulaire?
    Par steeves5 dans le forum Access
    Réponses: 5
    Dernier message: 01/07/2006, 13h49
  5. [MFC] Comment personnaliser sa police de caractères ?
    Par Guybrush113 dans le forum MFC
    Réponses: 11
    Dernier message: 26/05/2004, 07h29

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