Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Form Valeur de checkbox toujours 0

Posted by arnaud974 on 02/17/2022 12:13

Bonjour,

À partir d'un document XML, j'ai créé un formulaire de saisie de données. Celui-ci à une checkbox, mais lorsque je soumets le formulaire, la valeur que je récupère est toujours 0 (comme si je n'avais pas coché la checkbox). Cela même si la checkbox est cochée.

Voici la définition de mon formulaire @@

<?xml version="1.0" encoding="utf-8"?> <form xmlns="http://jelix.org/ns/forms/1.1"> <group ref="main"> <label locale="announcementAdmin~announcementAdmin.form.main.label"/> <checkbox ref="permanent"> <label locale="announcementAdmin~announcementAdmin.form.input.permanentMsg.label"/> <help locale="announcementAdmin~announcementAdmin.forms.input.permanent.help"/> </checkbox> <submit ref="_submit"> <label locale="admin~admin.form.admin_services.submit.label"/> </submit> </form>@@

et voici le traitement de ce formulaire après saisie des données :

@@ $form = jForms::get('announcementAdmin~config');

// token $token = $this->param('JFORMS_TOKEN'); if( !$token ){ // redirection vers la page d'erreur $rep= $this->getResponse("redirect"); $rep->action="announcementAdmin~config:index"; return $rep; } // If the form is not defined, redirection if( !$form ){ $rep= $this->getResponse("redirect"); $rep->action="announcementAdmin~config:index"; return $rep; } // Set the other form data from the request data $form->initFromRequest(); // Check the form if ( !$form->check() ) { // Errors : redirection to the display action $rep = $this->getResponse('redirect'); $rep->action='announcementAdmin~config:edit'; $rep->params['errors']= "1"; return $rep; } // Save the data $fData = array(); foreach ( $form->getControls() as $ctrl ) { if ( $ctrl->type != 'submit' ){ $val = $form->getData( $ctrl->ref ); $fData[$ctrl->ref] = $val; } } $profile = 'announcement'; $dao = jDao::get('announcementAdmin~announcementDetails', $profile); $record = jDao::createRecord('announcementAdmin~announcementDetails', $profile); jLog::log('form value : ' . $fData['permanent']); $record->permanent = $fData['permanent']; $dao->insert($record);

@@

Quand je regarde dans mes logs ou en base, la valeur est toujours 0 peu importe si j'ai coché ou non cette case.

J'ai essayé également en changeant les valeurs, mais sans succès. Là encore seule la valeur false est retournée.

<checkbox ref="permanent" valueoncheck="true" valueonuncheck="false">

Pourriez-vous m'aiguiller

  [Opened] Form Valeur de checkbox toujours 0

Reply #1 Posted by arnaud974 on 02/17/2022 12:15

Désolé pour la mise en page qui a sauté...

Je n'ai pas trouvé de moyen de modifier mon précédent message.

  [Opened] Form Valeur de checkbox toujours 0

Reply #2 Posted by arnaud974 on 02/17/2022 12:42

Bonjour,

À partir d'un document XML, j'ai créé un formulaire de saisie de données. Celui-ci à une checkbox, mais lorsque je soumets le formulaire, la valeur que je récupère est toujours 0 (comme si je n'avais pas coché la checkbox). Cela même si la checkbox est cochée.

Voici la définition de mon formulaire

<?xml version="1.0" encoding="utf-8"?>
<form xmlns="http://jelix.org/ns/forms/1.1">
    <group ref="main">
        <label locale="announcementAdmin~announcementAdmin.form.main.label"/>

        <checkbox ref="permanent" valueoncheck="toto" valueonuncheck="false">
            <label locale="announcementAdmin~announcementAdmin.form.input.permanentMsg.label"/>
            <help locale="announcementAdmin~announcementAdmin.forms.input.permanent.help"/>
        </checkbox>
<submit ref="_submit">
        <label locale="admin~admin.form.admin_services.submit.label"/>
    </submit>
</form>

et voici le traitement de ce formulaire après saisie des données :

$form = jForms::get('announcementAdmin~config');
    
    // token
    $token = $this->param('__JFORMS_TOKEN__');
    if( !$token ){
      // redirection vers la page d'erreur
      $rep= $this->getResponse("redirect");
      $rep->action="announcementAdmin~config:index";
      return $rep;
    }

    // If the form is not defined, redirection
    if( !$form ){
      $rep= $this->getResponse("redirect");
      $rep->action="announcementAdmin~config:index";
      return $rep;
    }

    // Set the other form data from the request data
    $form->initFromRequest();

    // Check the form
    if ( !$form->check() ) {
      // Errors : redirection to the display action
      $rep = $this->getResponse('redirect');
      $rep->action='announcementAdmin~config:edit';
      $rep->params['errors']= "1";
      return $rep;
    }

    // Save the data
    $fData = array();
    foreach ( $form->getControls() as $ctrl ) {
        if ( $ctrl->type != 'submit' ){
          $val = $form->getData( $ctrl->ref );
          $fData[$ctrl->ref] = $val;   
        }
    }

    $profile = 'announcement';
    $dao = jDao::get('announcementAdmin~announcementDetails', $profile);
    $record = jDao::createRecord('announcementAdmin~announcementDetails', $profile);
    jLog::log('form value : ' . $fData['permanent']);    
    $record->permanent = $fData['permanent'];
    $dao->insert($record);

Quand je regarde dans mes logs ou en base, la valeur est toujours 0 peu importe si j'ai coché ou non cette case.

J'ai essayé également en changeant les valeurs, mais sans succès. Là encore seule la valeur false est retournée.

<checkbox ref="permanent" valueoncheck="true" valueonuncheck="false">

Pourriez-vous m'aiguiller svp ?

Merci d'avance

  [Opened] Form Valeur de checkbox toujours 0

Reply #3 Posted by laurentj on 03/01/2022 11:08

Bonjour,

Le code m'a l'air correct. Je vais vérifier. Quelle version de Jelix utilisez-vous ?

  [Opened] Re: Form Valeur de checkbox toujours 0

Reply #4 Posted by arnaud974 on 03/01/2022 12:18

J'utilise Jelix en version 1.6.36-pre (avec Lizmap).

Je ne récupère aucune valeur pour les champs de type checkbox et radiobuttons.

Merci d'avance.

  [Opened] Form Valeur de checkbox toujours 0

Reply #5 Posted by laurentj on 03/13/2022 22:17

Bonjour,

Je n'arrive pas à reproduire le problème, en reprenant la même méthode pour sauver et le même fichier xml de l'exemple (même si il manque un </group>). Que ce soit dans une appli de test ou dans Lizmap.

peut être est-ce un problème lors de l'affichage du formulaire ? Me montrer la méthode du contrôleur qui initialise le formulaire et qui l'affiche, ainsi que le template utilisé pour l'affichage, pourrait m'être utile pour essayer de trouver le problème.

En regardant le code source HTML de l'affichage du formulaire, il y a bien value="toto" sur l'input de la checkbox ?

petite remarque: en mettant les valeurs true ou false, vous récupérez les chaines "true" ou "false", mais pas de boolean. Les valeurs indiquées dans valueoncheck ou valueonuncheck sont des chaines. Si le champs en base de donnée est de type boolean ou entier, en y indiquant la valeur récupéré, il y a des chances de ne pas avoir la valeur attendue dans la base.

  [Opened] Form Valeur de checkbox toujours 0

Reply #6 Posted by arnaud974 on 03/28/2022 06:37

Bonjour Laurent,

Désolé du temps pris à te répondre. Afin d'être plus concret, je souhaitais poster l'extension sur Github mais il fallait que je finalise quelques portions du code au préalable.

Tu trouveras ci-dessous le lien vers le dépôt :

https://github.com/arno974/lizmap-announcement

Plus spécifiquement le lien vers la définition du formulaire :

https://github.com/arno974/lizmap-announcement/blob/main/announcementAdmin/forms/config.form.xml

Et vers le script qui récupère les valeurs :

https://github.com/arno974/lizmap-announcement/blob/main/announcementAdmin/controllers/config.classic.php#L107

J'en profite au passage pour te demander si dans la méthode $form->saveToDao il est possible de spécifier le profil de connexion à la base ? Je n'ai rien trouvé en ce sens. Cela m'économiserait quelques lignes de code :)

Merci

  [Opened] Re: Form Valeur de checkbox toujours 0

Reply #7 Posted by arnaud974 on 04/21/2022 14:10

Bonjour Laurent,

Suite à la publication du code, as-tu pu identifier s'il te plait l'origine de l'erreur ?

Je te remercie d'avance.

Arnaud

  [Opened] Form Valeur de checkbox toujours 0

Reply #8 Posted by laurentj on 05/05/2022 11:36

Bonjour Arnaud,

Désolé, j'avais pas vu tes réponses. Je jettes un coup d'oeil, et proposerait éventuellement un PR. Ton module est intéressant :)

  [Opened] Form Valeur de checkbox toujours 0

Reply #9 Posted by arnaud974 on 05/05/2022 12:13

Merci beaucoup :)

 
Page
  1. Form Valeur de checkbox toujours 0