Pregunta

Soy nuevo en Drupal. He creado un módulo contace1 con el siguiente código:

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)));

    }

MI este código que he tratado de crear nuevo formulario de contacto

pero no muestra ningún enlace y en la página de apertura dan directamente a la página no encontrada.

No hay solución correcta

Otros consejos

En primer lugar, MENU_CALL_BACK no se define en Drupal. Lo que quería escribir es MENU_CALLBACK, que registra un elemento de menú en el menú del router. Este artículo no aparecerá en cualquier menú visible normalmente. Piense en ello como un elemento de menú oculto. Si desea hacerlo visible, el uso MENU_NORMAL_ITEM.

'tipo' = MENU_CALL_BACK - menú es de devolución de llamada, debe ponerlo a MENU_NORMAL_ITEM o manualmente crear el menú en la página de administración para la página contact1. actualización de caché.
te recomiendo totalmente mostrará "Pro Drupal Desarrollo" de Vandyk, hay ejemplos de cómo crear formas:)

El primer error en el código es que, si el módulo se llama contact1.module, entonces cada gancho que implementa debe tener un nombre que empieza con contact1_. A continuación, debe evitar el uso de contact_ en el nombre de las funciones del módulo, puesto que ya es el módulo de contacto en Drupal 6; en el caso de que su módulo es para Drupal 6, habría un conflicto entre los módulos.

El segundo error es que la constante que está utilizando es MENU_CALLBACK, no MENU_CALL_BACK.

Si contact1.module continuación, es el nombre de su módulo, el archivo de información que viene con él debe ser nombrado contact1.info, no contace1.info. Si utiliza un nombre equivocado para ese archivo, Drupal 6 y superior no debe mostrar su módulo en la lista de los módulos que puede instalar.

Hola intente utilizar este código

/**
* 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)
    {  ..........
       .......

Aquí, establece markup tipo a la salida de retorno con contenido y forma, también establecer el parámetro de contact_nameform ($ formulario, $ form_state)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top