Pergunta

Eu sou novo no Drupal. Eu criei um módulo contace1 com o seguinte 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)));

    }

Eu sou este código que tentei criar um novo formulário de contato

Mas ele não mostra nenhum link e, na página de abertura, fornece diretamente a página não encontrada.

Nenhuma solução correta

Outras dicas

Em primeiro lugar, MENU_CALL_BACK não é definido no Drupal. O que você queria escrever é MENU_CALLBACK, que registra um item de menu no roteador de menu. Este item não aparecerá em nenhum menu visível normalmente. Pense nisso como um item de menu oculto. Se você quiser torná -lo visível, use MENU_NORMAL_ITEM.

'TIPO' = MENU_CALL_BACK - MENU é o retorno de chamada, você deve defini -lo como MENU_NORMAL_ITEM ou criar manualmente o menu na página de administração para entrar em contato com 1. Atualizar o cache.

Eu recomendo que você leia totalmente "Pro que Drupal Development" de Vandyk, existem exemplos de como criar formulários :)

O primeiro erro no código é que, se o módulo for nomeado contact1.module, todo gancho implementa deve ter um nome começando com o contact1_. Você deve evitar o uso do contato_ no nome das funções do seu módulo, pois já existe o módulo de contato no Drupal 6; No caso do seu módulo, para o Drupal 6, haveria um conflito entre os módulos.

O segundo erro é que a constante que você está usando é MENU_CALLBACK, não MENU_CALL_BACK.

Se então contact1.module for o nome do seu módulo, o arquivo de informações que vem com ele deve ser nomeado contact1.info, não contace1.info. Se você usar um nome errado para esse arquivo, o Drupal 6 e Superior não deve mostrar seu módulo na lista dos módulos que você pode instalar.

Oi tente usar 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)
    {  ..........
       .......

Aqui eu defino Markup digite para retornar a saída com conteúdo e formulário, defina também o parâmetro de contact_nameform ($ form, $ form_state)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top