Php Drupal“您无权访问此页面。”

Php Drupal“您无权访问此页面。”,php,drupal,drupal-7,drupal-modules,Php,Drupal,Drupal 7,Drupal Modules,我刚开始学习drupal,如果这是一个非常愚蠢的问题,我深表歉意。我编写了以下模块,但每次尝试访问它时,都会转到urlhttp://localhost:8888/drupal/doodil_viral_signup 我收到一条拒绝访问的消息。我已经尝试过重建权限,禁用并重新启用模块,但似乎不起作用 <?php // $Id$ /** * @file * A module to encourage users to sign up. * This module allows users to

我刚开始学习drupal,如果这是一个非常愚蠢的问题,我深表歉意。我编写了以下模块,但每次尝试访问它时,都会转到urlhttp://localhost:8888/drupal/doodil_viral_signup 我收到一条拒绝访问的消息。我已经尝试过重建权限,禁用并重新启用模块,但似乎不起作用

<?php
// $Id$
/**
* @file
* A module to encourage users to sign up.
* This module allows users to sign up to register for the site, and invite their friends to do the same.
*/

/**
* Implements hook_help().
*/
function doodil_viral_signup_help($path, $arg) {
  if ($path == 'admin/help#first') {
    return t('This module allows users to sign up to register for the site, and invite their friends to do the same.');
  }
}

/**
* Implements hook_menu().
*/
function doodil_viral_signup_menu($may_cache = true) {
  $items = array();
  if ($may_cache) {
    $items[] = array(
      'path' => 'doodil_viral_signup',
      'title' => t('Doodil Signup'),
      'callback' => 'doodil_viral_signup_page',
      'access' => TRUE,
      'type' => MENU_CALLBACK,
    );
  }
  return $items;
}

function doodil_viral_signup_page() {
  return drupal_get_form('doodil_viral_signup_page_form');
}

function doodil_viral_signup_page_form() {
  // [input text] First Name
  $form['first_name'] = array(
    '#type' => 'textfield',
    '#title' => t('First Name'),
  );

  // [input text] Last Name
  $form['last_name'] = array(
    '#type' => 'textfield',
    '#title' => t('Last Name'),
  );

  // [input text] Email Address
  $form['email_address'] = array(
    '#type' => 'textfield',
    '#title' => t('Email Address'),
  );

  // [input submit] Sign Me Up
  $form['submit'] = array(
    '#type' => 'submit',
    '#title' => t('Sign Me Up'),
  );
  return $form;
}

function doodil_viral_signup_page_form_submit($form_id, $form_values) {
  $message = 'You have submitted the following information <pre>'.print_r($form_values).'</pre>';
  drupal_set_message(t($message));
}
谁能告诉我怎么解决这个问题吗


提前谢谢

此代码全部采用Drupal 5使用的格式。你的标签上写着drupal 7,所以我想这就是你想要的

function doodil_viral_signup_page_form($form, &$form_state) {
表格应该是

function doodil_viral_signup_page_form_submit($form, $form_state) {
  drupal_set_message(t('You have submitted the following information <pre>!info</pre>', array(
    '!info' => print_r($form_state['values'], TRUE),
  )));
}
提交文件应为:

function doodil_viral_signup_menu() {
  $items = array();
  $items['doodil_viral_signup'] = array(
    'title' => 'Doodil Signup',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('doodil_viral_signup_page_form'),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );
  return $items;
}
但是,使用是一种丑陋的调试方式。您应该下载devel模块并使用它的函数dsm$form_state['values']

按照loganfsmyth的建议去做,除了hook_菜单,它应该是这样的:

function_name($form)
并删除doodil_病毒_注册_页面功能

编辑

这是刚刚在我的机器上测试过的,它工作得很好。如果它不能在您的机器上工作,那么问题不在本模块中


当您给定的$form、&$form_在上面给出的代码中表示。 您可能会遇到这种类型的错误:

函数中只能有一个参数


我也犯了同样的错误

通过这样做解决: 删除:page_回调、page_参数和access_回调中的下划线


它们应该是页面回调、页面参数、访问回调。没有下划线

是的,我正在使用Drupal 7。我用了一本过时的教程,真是活该!即使在做了您建议的更改之后,这似乎仍然不起作用。我禁用了该模块,重新构建了权限,并在进行了更改后重新启用了它,以确保安全。实际上,我只是尝试了另一个测试页面,上面说访问被拒绝。我猜这是权限问题?我不知道您所说的重建权限是什么意思,但您需要单击“性能”页面上的“清除缓存”。Drupal将来自hook_菜单的所有数据保存在缓存中,因此只有在清除缓存时才会执行hook_菜单。仍然什么都没有:我已经查看了整个模块代码,并确保没有做过任何愚蠢的事情,比如缺少分号和所有其他与键入速度过快有关的杂七杂八的事情。你们中有谁愿意仔细看看代码和我的Drupal安装吗?我很高兴给管理员访问等。
function doodil_viral_signup_help($path, $arg) {
  if ($path == 'admin/help#first') {
    return t('This module allows users to sign up to register for the site,
    and invite their friends to do the same.');
  }
}

function doodil_viral_signup_menu() {
  $items = array();
  $items['doodil_viral_signup'] = array(
    'title' => 'Doodil Signup',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('doodil_viral_signup_page_form'),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK
  );
  return $items;
}

function doodil_viral_signup_page_form($form, &$form_state) {
  $form['first_name'] = array(
    '#type' => 'textfield',
    '#title' => t('First Name')
  );
  $form['last_name'] = array(
    '#type' => 'textfield',
    '#title' => t('Last Name')
  );
  $form['email_address'] = array(
    '#type' => 'textfield',
    '#title' => t('Email Address')
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Sign Me Up')
  );
  return $form;
}

function doodil_viral_signup_page_form_submit($form, $form_state) {
  $message = t('Your submitted information <pre>!info</pre>', array(
    '!info' => print_r($form_state['values'], TRUE)
  ));
  drupal_set_message($message);
}
--------------------------------------
warning: Missing argument 2 for 
--------------------------------------
function_name($form)