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 :

Affichage dynamique des champs


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Par défaut Affichage dynamique des champs
    Je me tire les cheveux pour un problème de conception,
    Les directeurs de magasins doivent présenter leur chiffres sur un certain laps de temps défini par l'admin

    D'un côté,l'admin avec un formulaire choisit une année de départ et une année de fin.
    Par exemple, année de départ 2015 et année de fin, 2017
    De plus il choisit une périodicité soit trimestrielle,semestrielle ou mensuelle.

    De son coté, le user saisira directement les valeurs qui correspondent à des totaux, soit selon la périodicité choisie, une icone sera présente sous chaque paire d'année qui ouvrira une modale pour saisir des valeurs.
    SI la périodicité est semestrielle, on aura donc semestre 1 et semestre 2 pour l'écharpe blanche. A la validation, une addition devra être faite et le total sera affiché sur le tableau prinicipal
    Pour bien comprendre : le lien pour voir à quoi ressemble le tableau
    https://jsfiddle.net/x99pnc4h/5/
    Le problème c'est que je ne sais pas comment faire en sorte d'afficher les champs pour chaque vêtements directement sans data prototype.,

    Je cherche à avoir les champs affichés directement sans passer par le data prototype. Que les champs s'affichent en fonction du nombre de colonne

  2. #2
    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
    Par défaut
    ça donne mal à la tête pour comprendre.
    si on choisit mensuelle, on clique dans une case un modal s'affiche et on peut saisir tous les mois de l'année 2014 à 2015 donc les 24 mois d'affilés ?

    ensuite faut enregistrer tout ça en base ? (pour une utilisation ultérieure ?)
    et donc ça veut dire qu'il faut aussi enregistrer en base la saisit trimestrielle et semestrielle également pour la même période ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Par défaut
    Citation Envoyé par dukoid Voir le message
    ça donne mal à la tête pour comprendre.
    si on choisit mensuelle, on clique dans une case un modal s'affiche et on peut saisir tous les mois de l'année 2014 à 2015 donc les 24 mois d'affilés ?

    ensuite faut enregistrer tout ça en base ? (pour une utilisation ultérieure ?)
    et donc ça veut dire qu'il faut aussi enregistrer en base la saisit trimestrielle et semestrielle également pour la même période ?
    Je vais simplifier mon explication.
    L'admin a choisi de 2014 à 2017 avec une périodicité semestrielle.
    On aura quatres colonnes et un certain nombre de lignes selon le magasin.
    2014/2015, 2015/2016, 2016/2017 : ventes réalisées, 2016/2017 : ventes prévues.
    Car à partir de 2016,deux colonnes s'affichent avec ventes réalisées et ventes prévues car c'est l'année courante.
    Imaginons qu' on ait trois lignes, douze champs doivent s'afficher.
    Pour chaque colonne,il y a une icône qui ouvre une modale.
    Exemple pour l'année 2014,soit je saisit la valeur directement dans le champs correspondant à un total.
    Soit j'ouvre la modale et il aura deux colonnes semestre 1 et semestre 2 juste pour l'année 2014.
    Pour un produit,hé mets 10 pour le semestre 1 et 10 pour le semestre 2,je valide alors la valeur 20 s'affichera dans le champ du produit pour l'année 2014

  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
    Par défaut
    voici grossièrement ce que je ferais :

    * creer un formtype qui represente une ligne : ligneFormType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
      public function buildForm(FormBuilderInterface $builder, array $options)
        {
            for ($annee=$annee1; $annee<=$annee2; $annee++)                      // annee1=2016    annee2=2017   provenant du filtre
                $builder->add('total_'.$annee,  'number', ['empty_data' => 0])        // il est possible de passer des paramètres dans un formTYpe
    ...

    * après, je ne sais pas comment tu récupères les produits: "echarpes bleu", "echarpe blanc"...
    donc faire un formType : tableauFormType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
      public function buildForm(FormBuilderInterface $builder, array $options)
        {
            for ($nb=0; $nb<=count($produits); $nb++)                      // produits ( "echarpes bleu", "echarpe blanc")
                $builder->add('ligne_' . $nb,   class::formType, 'ligneFormType');
    ...
    * en faisant un dump de $tableauFormType->createView() tu va voir la structure en global du formulaire
    * dans twig, pour l'affichage. utiliser cette technique pour personnaliser l'affichage du formulaire. (les variables de l'exemple n'ont aucun rapport avec ton sujet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {% for key,value in form.user %}                           {# key is the ID in the database table #}
        {{ form_widget(value, {'label':value.vars.label}) }}
        {{ form.user.vars.choices[key].data.moneyLeft }}            {# this syntax is new #}
    {% endfor %}
    * remarque :
    chaque champ représente un total.
    pour saisir les valeurs en mensuel, semestriel etc... tu fais ça avec jQuery + modal
    à chaque changement du filtre (année etc..) il faut reconstruire les formType

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Par défaut
    Citation Envoyé par dukoid Voir le message
    voici grossièrement ce que je ferais :

    * creer un formtype qui represente une ligne : ligneFormType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
      public function buildForm(FormBuilderInterface $builder, array $options)
        {
            for ($annee=$annee1; $annee<=$annee2; $annee++)                      // annee1=2016    annee2=2017   provenant du filtre
                $builder->add('total_'.$annee,  'number', ['empty_data' => 0])
    ...

    * après, je ne sais pas comment tu récupères les produits: "echarpes bleu", "echarpe blanc"...
    donc faire un formType : tableauFormType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
      public function buildForm(FormBuilderInterface $builder, array $options)
        {
            for ($nb=0; $nb<=count($produits); $nb++)                      // produits ( "echarpes bleu", "echarpe blanc")
                $builder->add('ligne_' . $ns,   class::formType, 'ligneFormType');
    ...
    * en faisant un dump de $tableauFormType->createView() tu va voir la structure en global du formulaire
    * dans twig, pour l'affichage. utiliser cette technique pour personnaliser l'affichage du formulaire. (les variables de l'exemple n'ont aucun rapport avec ton sujet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {% for key,value in form.user %}                           {# key is the ID in the database table #}
        {{ form_widget(value, {'label':value.vars.label}) }}
        {{ form.user.vars.choices[key].data.moneyLeft }}            {# this syntax is new #}
    {% endfor %}
    * remarque :
    chaque champ représente un total.
    pour saisir les valeurs en mensuel, semestriel etc... tu fais ça avec jQuery + modal
    à chaque changement du filtre (année etc..) il faut reconstruire les formType

    Merci de t'être penché sur mon problème.
    Je vais essayer de mettre ça en place.

    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 129
    Par défaut Affichage seulement d'un seul champ
    Mon souci se pose dans le fichier twig où je n'arrive pas à afficher les champs pour mes produits

    Twig :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    {% for product in products %}
                            <tr>
                                <td >
                                    {{ product }}
     
                                </td>
                              {% for key,value in form.total %}   
                               <td>        
                                 {{  form_widget(value, {'label':value.vars.label}) }}
                              </td>           
                              {% endfor %}
                            </tr>
                        {% endfor %}
    Dans mon formtype, j'ai fait ceci

    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
     
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
     
            for ($i = 0; $i <= $options['nbColumns']; $i++) {
                $builder->add('total', NumberType::class);
            }
     
        }
     
        /**
         * {@inheritdoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Store\ProductBundle\Entity\FormTotal',
                'nbColumns' => []
            ));
     
        }
    Puis dans le controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /...../
    $total = new FormTotal();
     $options = ['nbColumns' => $nbFields];
     $form = $this->createForm(FormTotalType::class, $total, $options);
    Si je fais un dump de $nbFields, le chiffre 13 apparait dans le profiler!

Discussions similaires

  1. recuperation et remplissage dynamique des champs de textes
    Par gloglo dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/04/2007, 18h55
  2. Inserer dynamiquement des champs input avec attribut
    Par titou250 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2007, 09h44
  3. affichage defectueux des champs
    Par @rkane dans le forum Access
    Réponses: 6
    Dernier message: 13/09/2006, 17h43
  4. [JScrollPane] Affichage dynamique des barres de scroll
    Par Atharendil dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/01/2006, 21h07
  5. Parcours dynamique des champs
    Par cosmos38240 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/11/2005, 14h54

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