Question

Je suis nouveau à Drupal. J'ai créé un module contace1 avec le code suivant:

contace1.info

; $Id$
name = Contact1
description = Show how to build contact form
package = Pro Drupal Development
core = 6.x

contact1.module

// $Id$

/**
* @file
* practice to build form
*/

/**
* Implimentation of hook_menue().
*/

function contact_menu()
    {
        $items['contact1'] = array(
            'title' => 'Contact',
            'page callback' => 'contact_page',
            'access argument' => array('access content'),       
            'type'=>MENU_CALL_BACK,
            'access callback' => TRUE,

            );
            return $items;

    }

/**
* menu callback
* called when user goes to http://localhost/drupaldemo/?q=contact
*/

function contact_page()
    {
        $output = t('You can leave a message using the contact form below.');
        //Return the html generated from $form data structure.
        $output.= drupal_get_form('contact_nameform');
        return $output;
    }
    /**
    * define the form
    */
function contact_nameform()
    {
        $form['user_name']= array(
        '#title' =>t('Your Name'),
        '#type' => 'textfield',
        '#description' => t('Please enter your name.'),
                );
        $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Submit'),
        )       ;
        return $form;
    }

/**
* validate the form
**/
function contact_nameform_validate()
    {
        if($form_state['values']['user_name']=="")
            {
            form_set_error('user_name',t('Please enter your name.'));
            }

    }

/**
* handle post validation form submition
*/
function contact_nameform_submit($form ,&$form_state)
    {
    $name=$form_state['values']['user_name'];
    drupal_set_message(t('Thanks for filling out the form, %name',array('%name'=>$name)));

    }

im ce code que j'ai essayé de créer un nouveau formulaire de contact

mais il ne montre aucun lien à la page d'ouverture directement donner page non trouvée.

Pas de solution correcte

Autres conseils

Tout d'abord, ne MENU_CALL_BACK pas défini dans Drupal. Qu'est-ce que vous vouliez écrire est MENU_CALLBACK, qui enregistre un élément de menu dans le routeur de menu. Cet article ne sera pas apparaître dans un menu visible normalement. Pensez-y comme un élément de menu caché. Si vous voulez le rendre visible, l'utilisation MENU_NORMAL_ITEM.

'type' = MENU_CALL_BACK - menu est fonction de rappel, vous devez le mettre à MENU_NORMAL_ITEM ou créer manuellement menu dans la page d'administration à Contact1 page. Actualiser le cache.
Je vous recommande de lire entièrement « Développement Pro Drupal » de Vandyk, il y a des exemples comment créer des formulaires:)

La première erreur dans le code est que, si le module est nommé contact1.module, puis chaque crochet, il met en œuvre devrait avoir un nom commençant par contact1_. Vous devriez alors éviter d'utiliser Contact_ au nom des fonctions de votre module, car il est déjà le module de contact dans Drupal 6; dans le cas où votre module pour Drupal 6, il y aurait un conflit entre les modules.

La deuxième erreur est que la constante que vous utilisez est MENU_CALLBACK, pas MENU_CALL_BACK.

Si donc contact1.module est le nom de votre module, le fichier d'information qui vient avec elle devrait être nommé contact1.info, pas contace1.info. Si vous utilisez un nom incorrect pour ce fichier, Drupal 6 et supérieur ne doit pas montrer votre module dans la liste des modules que vous pouvez installer.

Salut essayer d'utiliser ce code

/**
* menu callback
*
*/

function contact_page()
    {
        $output = array(
            'item 1' => array(
              "#type" => 'markup',
              '#markup' =>  t('You can leave a message using the contact form below.'),
            ),
            'item 2' => array(
              "#type" => 'markup',
              '#markup' =>  drupal_get_form('contact_nameform'),
            ),
        );
        return $output;
    }
    /**
    * define the form
    */
function contact_nameform($form, $form_state)
    {  ..........
       .......

Ici, je mets balises le type de retour de sortie avec le contenu et la forme, définissez également le paramètre de contact_nameform ($ form, form_state de $)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top