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 :

Créer des champs de type Entity dynamique en symfony 3


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Par défaut Créer des champs de type Entity dynamique en symfony 3
    Bonsoir chèr tous,

    Je débute depuis peu en Symfony 3 et je me heurte à un souci auquel malgré mes recherches je n'ai pas trouvé solution jusqu'alors . Voilà :
    J'ai deux entités Demande et Article unis pas une relation ManyToMany. Une demande peut concerner plusieurs articles avec des quantités. Donc sur la page d'ajout de la demande je récupère la liste des articles avec Entity Type.
    Nom : AideForum.PNG
Affichages : 1987
Taille : 21,5 Ko
    Le hic c'est que je souhaite, sur cette page, ajouter de façon dynamique et le champ select et le champ de quantité pour lier d'autres articles à ma demande à l'aide d'un bouton Add, et les retirer avec un bouton Delete dans le genre ce qui ce qui se fait déjà avec le type CollectionType de Symfony.



    Voilà ce que j'ai déja fait
    Code de mon controlleur
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
     
    namespace bpecStockManager\smBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type\IntegerType;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType ;
    use Symfony\Component\Form\FormEvent;
    use Symfony\Component\Form\FormEvents;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
     
     
    class DemandeArticleType extends AbstractType
    {
        /**
         * {@inheritdoc}
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('article', EntityType::class, array(
                                  'class'         => 'bpecStockManagersmBundle:Article',
                                  'choice_label'  => 'articleNom',
                                  'multiple'      => false,   
                                  'placeholder' => "Choisir l'article" ,
                                  'label' => 'Article'                         
                                ))
                ->add('quantiteDemande', IntegerType::class, array(
                        'label' => 'Quantité demandée'))    
                ->add('Save', SubmitType::class, array('label' => 'Valider') )
            ;
     
     
     
        }
     
        /**
         * {@inheritdoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'bpecStockManager\smBundle\Entity\DemandeArticle'
            ));
        }
     
        /**
         * {@inheritdoc}
         */
        public function getBlockPrefix()
        {
            return 'bpecstockmanager_smbundle_demandearticle';
        }
     
     
    }

    Je vous avoue que je ne sais quoi faire.
    Need help please!!!
    Merci bien

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 49
    Par défaut
    Bonjour.

    Si tu veux quelque chose de dynamique fais le en ajax.

    Je m'explique, dans ton js, tu as un tableau vide. Lorsque l'utilisateur choisi un article et une quantité, tu stock ces informations dans ton tableau JS. Une fois qu'il a fini de saisir il clic sur un button (ex: Etape suivante). Lorsqu'il clic tu envois une requête ajax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $.ajax({
                url: url,
                type: "POST",
                data : data,
                success: function (response) {
                    window.location = response.url;
                }
            })
     
    // data -> ton tableau de donnée
    // url -> la route de ton controller (var url = "{{ url('save_commande', {'cmd' : commande.id}) }}";)
    // response.url -> dans ton controller tu renvoies un JSONResponse, qui aura un paramètre 'url' qui sera la route de la page suivante.
    Après je sais qu'il est possible de la faire avec des collections mais je ne l'utilise jamais je trouve cette utilisation plus pratique

    Cordialement

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Par défaut
    Bonjour TBourgault,

    Je vais chercher de ce coté et je te reviens

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Par défaut Rebonjour TBourgault, aurait des pistes précis vers lesquelles me diriger ?
    Citation Envoyé par TBourgault Voir le message
    Bonjour.

    Si tu veux quelque chose de dynamique fais le en ajax.

    Je m'explique, dans ton js, tu as un tableau vide. Lorsque l'utilisateur choisi un article et une quantité, tu stock ces informations dans ton tableau JS. Une fois qu'il a fini de saisir il clic sur un button (ex: Etape suivante). Lorsqu'il clic tu envois une requête ajax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $.ajax({
                url: url,
                type: "POST",
                data : data,
                success: function (response) {
                    window.location = response.url;
                }
            })
     
    // data -> ton tableau de donnée
    // url -> la route de ton controller (var url = "{{ url('save_commande', {'cmd' : commande.id}) }}";)
    // response.url -> dans ton controller tu renvoies un JSONResponse, qui aura un paramètre 'url' qui sera la route de la page suivante.
    Après je sais qu'il est possible de la faire avec des collections mais je ne l'utilise jamais je trouve cette utilisation plus pratique

    Cordialement

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 49
    Par défaut
    Dis moi ce que tu ne comprends pas et je pourrai t'orienter

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Par défaut
    En gros voilà ,

    Comment enregister et l'article et la quantité et ceci plusieurs fois pour ensuite les relier à une seule demande... Java Script je l'ai bien compris. Le tableau dont tu parles, est une sorte de table temporaire ? ou un tableau genre array JavaScript

    J'avoue que je suis pas vraiment un As du javaScript, Donc je suis quelque peu perdu dans mes recherches pour le moment

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 49
    Par défaut
    Donc voilà le principe, au début la liste est vide.

    l'utilisateur choisi une valeur pour le select1 et une autre pour le select2.
    Une fois qu'il clic sur le bouton valider (pour enregistrer les premiers items), là un lève un évènement JS.

    Donc, tu as un JS (JQuery):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $(document).ready(function () {
        var data = {}
        $("#btnValidate").click(function () {
            var select1 = //Récupère la valeur de ton select
            var select2 = //Récupère la valeur de ton deuxième select
            data[select1] = select2
            // Ci dessus, select1 = Article , select2 = quantité
        }
    }
    Donc là ton tableau va s'incrémenter au fur et à mesure. Ensuite lorsqu'il y a un clic sur le btn de submit général là tu envois ta requête ajax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var url = "{{ path('valider_commande') }}";
            $.ajax({
                url: url,
                type: "POST",
                data: data,
                success: function (response) {
                    window.location = response.url;
                }
            });
    Voilà un peu le truc (expliqué rapidement mais l'idée est là)

Discussions similaires

  1. [AC-2003] Comment créer des champs nommés dynamiquement
    Par franz.moraine dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2012, 14h35
  2. Réponses: 1
    Dernier message: 16/04/2007, 12h19
  3. Réponses: 10
    Dernier message: 07/03/2007, 18h46
  4. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  5. requete sql avec between sur des champs de type Date
    Par ersoufiane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/08/2006, 19h43

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