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

  [Opened] Form Valeur de checkbox toujours 0

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

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

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

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

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

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

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 smile

Merci

  [Opened] Re: Form Valeur de checkbox toujours 0

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

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 smile

  [Opened] Form Valeur de checkbox toujours 0

Merci beaucoup smile

 
Page
  1. Form Valeur de checkbox toujours 0