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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Développement module, fonction non fonctionnelle


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Développement module, fonction non fonctionnelle
    Bonsoir tout le monde,

    Voilà, je suis entrain de développer un p'tit module sur Drupal. C'est un formulaire d'insertion de données dans une table. Rien de sorcier en soi.

    Cependant, une fois que les valeurs sont mises dans le formulaire, on soumet l'inscription, la fonction "inscription_newsletter_validate() ne fonctionne pas. J'ai testé en mettant un echo "ok1"; avant la fonction, echo "ok2"; dans la fonction, echo "ok3";après la fonction, et au final, le echo "ok2"; n'est pas affiché.

    Le script oublie la fonction et passe directement à la suivante. Je ne comprends pas pourquoi.

    Je vous passe mon code.

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php
     
    /**
     * Implements hook_permission()
     */
    function inscription_newsletter_permission() {
        return array(
            'submit inscription_newsletter' => array(
                'title' => t('Submit inscription_newsletter'),
                'description' => t('Submit the inscription_newsletter form'),
            ),
            'access inscription_newsletter submission' => array(
                'title' => t('Access inscription_newsletter submission'),
                'description' => t('Accesse the inscription_newsletter submission'),
            ),
        );
    }
     
    /**
     * Implements hook_menu()
     */
    function inscription_newsletter_menu() {
        $items = array();
        $items['inscription-newsletter'] = array(
            'title' => 'Inscription Newsletter Formulaire',
            'type' => MENU_NORMAL_ITEM,
            'access arguments' => array('submit inscription_newsletter'),
            'page callback' => 'drupal_get_form',
            'page arguments' => array('inscription_newsletter_form'),
        );
        $items['form-newsletter-submissions'] = array(
            'title' => 'Inscription Newsletter Submission',
            'type' => MENU_NORMAL_ITEM,
            'access arguments' => array('access inscription_newsletter submission'),
            'page callback' => 'inscription_newsletter_submission',
        );
        return $items;
    }
     
    /**
     * Inscription Newsletter Form
     */
    function inscription_newsletter_form($form, &$form_state) {
        $civil = array(t('Monsieur') => t('Monsieur'), t('Madame') => t('Madame'));
     
        $form['civil']['civil'] = array(
            '#type' => 'radios',
            '#title' => t('Civilité'),
            '#default_value' => '',
            '#options' => $civil,
        );
     
        $form['name'] = array(
            '#type' => 'textfield',
            '#title' => t('Votre nom'),
            '#required' => TRUE,
            '#description' => t('Entrez votre nom.'),
        );
     
        $form['email'] = array(
            '#type' => 'textfield',
            '#title' => t('Votre adresse email'),
            '#size' => 60,
            '#maxlength' => 128,
            '#required' => TRUE,
            '#description' => t('Entrez votre adresse email'),
        );
     
        $form['submit'] = array(
            '#type' => 'submit',
            '#value' => t('S\'inscrire'),
        );
     
        return $form;
    }
     
    /**
     *  Implements hook_validate()
     */
    function inscription_newsletter_validate($form, &$form_state) {
        $valid_email = $form_state['values']['email'];
        if (!valid_email_address($valid_email)) {
            form_set_error('email', 'Votre adresse email -- ' . $valid_email . ' -- n\'est pas valide !');
        }
    }
     
    /**
     * Submit handler for the inscription_newsletter_form. Inserts entry into the database.
     */
    function inscription_newsletter_form_submit($form, &$form_state) {
        $fe_id = db_insert('inscription_newsletter')
            ->fields(array(
                'civil' => $form_state['values']['civil'],
                'name' => $form_state['values']['name'],
                'email' => $form_state['values']['email'],
            ))
            ->execute();
        drupal_set_message(t('Votre soumission a bien été prise en compte.'));
    }
     
    /**
     * View the form submission
     */
    function inscription_newsletter_submission() {    
        $results = db_query("SELECT * FROM {inscription_newsletter}");
     
        $header = array(t('Id'), t('Civilité'), t('Nom'), t('Adresse email'));
        $rows = array();
     
        foreach ($results as $result) {
            $rows[] = array(
                check_plain($result->in_id),
                check_plain($result->civil),
                check_plain($result->name),
                check_markup($result->email),
            );
        }
        return theme('table', array('header' => $header, 'rows' => $rows));
    }
    Merci d'avance pour vos réponses si vous en avez bien entendu.

    Cordialement,

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    ta fonction ne doit pas s’appeler "inscription_newsletter_validate" mais "inscription_newsletter_form_validate" (hook_form_validate).

    Pour le développement tu dois utiliser le module Devel et la fonction dsm() pour obtenir des retours, "echo" a d'après moi peu de chances de te donner un résultat compte tenu que la fonction de validation d'un formulaire n'est pas sensée afficher quelque chose.

    Bonne fin d'année !

Discussions similaires

  1. Fonction non fonctionnelle, le comble!
    Par rhipilaf dans le forum R
    Réponses: 6
    Dernier message: 21/02/2019, 17h14
  2. [Team developer 5.2 (SP4)] Module Impression non fonctionnel
    Par orland dans le forum Autres langages
    Réponses: 0
    Dernier message: 11/02/2015, 11h28
  3. Module chargé non fonctionnel
    Par enila dans le forum Apache
    Réponses: 9
    Dernier message: 19/08/2010, 09h32
  4. Fonction declencheur non fonctionnelle
    Par L'aigle de Carthage dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 16/11/2009, 19h23
  5. [Module de classe] Fonction non liée à l'instance?
    Par Caroline1 dans le forum Access
    Réponses: 6
    Dernier message: 07/04/2006, 20h13

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