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 :

Incompatibilité entre JS et ChoiceType


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Par défaut Incompatibilité entre JS et ChoiceType
    Bonjour,

    Je crée une barre de recherche dans mon projet avec un champ 'isActif' de type boolean

    Dans le Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
           $builder->add('isActif',ChoiceType::class, [
                        'label' => 'Actif ?',
                        'required'   => false,
                        'choices'  => [
                            'Actif' => 1,
                            'Inactif' => 0,
                        ]
                ]);
    }
    Dans mon Twig,

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    <button onclick="myFunction()">Effacer</button>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function myFunction() {
        document.getElementById('isActif').value="";
    }

    Mon controlle:

    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
    class UsersController extends AbstractController
    {
        public function index( Request $request)
        {
            $search = new UsersSearch();
            $form = $this->createForm(UsersSearchType::class, $search);
            $form->handleRequest($request);
     
            $repository = $this->getDoctrine()->getRepository(Users::class);
            if($form->isSubmitted() &&$form->isValid()) {
                $users =$repository->findAllVisibleQuery($search);
           }
           return $this->render('admin/users/index.html.twig', [
                'users' => $users,
                'form'=> $form->createView(),
            ] );
        }
    }
    Le problème, quand je choisie par exemple 'Actif' et puis je clique le bouton Effacer, ce champ n'a pas été effacé, au contraire, il a ajouté selected="selected" dans <option value="1">Actif</option>, j'ai essayé de modifier myFunction() en utilisant selectedIndex = 0, remove(selectedIndex) etc, rien a changé.

    Je pense que ça vient de ChoiceType, en fait, isActif est un type de boolean qu'il correspondant Entity Users ($actifuser), il y a des solutions pour mettre les valeurs de choices à partir des valeur de $actifuser ?

    Merci par avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 156
    Par défaut
    Bonjour,

    En tentant un code de ce genre dans le JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('isActif')[0].value = null;
    Qu'est ce que ça donne ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 156
    Par défaut
    Ou plutôt, vu qu'il y a 2 choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function myFunction() {
                    document.getElementsByName('isActif')[0].value = null;
                    document.getElementsByName('isActif')[1].value = null;
                }

  4. #4
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Par défaut
    Bonjour,

    Merci merou19, j'ai crée cette barre de recherche par FormBuilderInterface, donc dans Twig, la première <option> est automatiquement ajouté. J'ai testé plusieurs méthodes dans myFunction(), il y a que alert() qui fonctionne, les autres n'ont pas marché.
    Dans cette barre de recherche, il y a aussi les autres champs de type TextType ou EntityType, j'ai utilisé le même façon de remettre les valeurs à vide dans myFunction() et ça marche correctement.
    Code twig : 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
    <select id='isActif' name='xx' class='form-control'>
        <option value></option>
         <option value="1">Actif</option>
         <option value="0">Inactif</option>
    </select>
    ...
    <button>Recherche</button>
    <button onclik='myFunction()'>Effacer</button>
     
    ...
     
    {% block javascripts %}
        <script>
            function myFunction(){
                document.getElementById('isActif').value="";
                //document.getElementById('isActif').selectedIndex = '0';
                //document.getElementById('isActif').options[0].selected = true;
               console.log(document.getElementById('isActif'));
               console.log(document.getElementById('autrechamp'));
               alert('log');
                
            }
        </script>
    {% endblock %}

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Par défaut
    Bonjour,

    J'ai enfin réglé ce problème, j'ai utilisé JQuery au lieu de JS, et ça marche.
    Mais je ne comprends pas pourquoi JS ne peut pas remettre la valeur null pour cette case. Si quelqu'un le savoir, faites-moi savoir. Merci !

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

Discussions similaires

  1. Incompatibilité entre les objets
    Par bastoonet dans le forum Designer
    Réponses: 1
    Dernier message: 22/02/2007, 08h51
  2. Incompatibilitée entre SDL et SDL_net ?
    Par lichman dans le forum SDL
    Réponses: 2
    Dernier message: 09/12/2006, 18h27
  3. objet incompatibilité entre Flash8 et Flash9
    Par Heptaeon dans le forum Flash
    Réponses: 1
    Dernier message: 20/10/2006, 23h56
  4. Incompatibilité entre doctype et javascript
    Par Orionmel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2005, 15h03
  5. Réponses: 2
    Dernier message: 25/05/2004, 11h40

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