Bonjour
Pour faire simple, j'ai un form avec une question du type "comment avez vous entendu parler de nous ?" et les réponses possibles sont des checkbox. J'aimerai que si l'utilisateur sélectionne "autre", un text input apparaisse instantanément. J'ai regardé la doc de symfony qui propose des solutions grâce à twig :
https://symfony.com/doc/current/reference/forms/twig_reference.html#selectedchoice-selected-value
mais cette solution ne fonctionne pas ..
Aussi, je ne connais pas du tout javascript donc le peu de solutions l'utilisant que j'ai testées étaient de simples copier coller...
Voilà le code du champs de mon form auquel je veux appliquer celà :
[CODE]->add('provenances', ChoiceType::class, 'expanded' => true, 'multiple' => true, 'label' => 'Comment avez-vous entendu parler de la journée portes ouvertes ?', 'choices' => [ 'Forum des métiers, salons (Studyrama..)' => 'forum', Entourage/Proches' => 'proche', 'Etudiant actuel/ancien' => 'etudiant_actuel/ancien', 'Etablissement d’origine' => 'ecole', 'Presse' => 'presse', 'Site Web de l’IUT' => 'site', 'Internet' => 'internet', 'Facebook' => 'facebook', 'Linkedin' => 'linkedin', 'Autre' => 'autre', ], ])[/CODE]

2 réponses


Bonjour,

Je ne pense pas que ce soit réalisable en Php, donc avec des fonctionnalités embarquées de Symfony. Pour moi, tu dois de fait utiliser du Javascript ou Jquery.

Voici, pour l'exemple, un petit script Jquery que j'ai écris afin de supprimer des éléments de mon formulaire lorsque l'utilisateur clique sur un bouton :

// If certain durations are not used, the user can remove them

jQuery ( document ). ready ( function () {

    $('.btn-remove') . on ( 'click' , function ( e ) {

        $( '#' + e.target.id ).remove();
        $(this).remove();

    });

});
cam-bdt
Auteur

J'ai réussi en faisant ça :


    function txtInput() {
        // Get the checkbox
        var checkBox = document.getElementById("form_info_gim_motifs_5");
        // Get the output text
        var text = document.getElementById("text");

        // If the checkbox is checked, display the output text
        if (checkBox.checked == true) {
            text.style.display = "block";
        } else {
            text.style.display = "none";
        }
    }

Par contre, une fois que je submit le form, les données des cases à cocher ou celles du text input ne sont pas ajoutées à la Base de donnée