Drupal - 找不到自定义模块的页面

时间:2014-04-03 08:32:23

标签: php forms drupal drupal-7

我对Drupal相当新,只是让我的第一个模块显示了一个表单。在hook_menu()中,我设置了$ items [' form'],如下所示。当我导航到mysite.com/form时,除了主题和:找不到页面,请求的页面" / form"无法找到。

我试图清除我的缓存,给我的模块一个不同的名称,确保我的模块已启用,没有任何帮助。有谁知道问题可能是什么? .module文件中的代码就在这里:

<?php 

//implements hook_permission()
function form_example_permission() {
  return array(
    'Submit form_example' => array(
      'title' => t('Submit form_example'),
      'description' => t('Submit the form_example form'),
    ),
  );
}


//implements hook_menu()
function form_example_menu() {
  $items['form'] = array(
    'title' => 'My Example Form',
    'type' => MENU_NORMAL_ITEM,
    'acces' => TRUE,
    'page callback' => 'drupal_get_form()',
    'page arguments' => array('form_example_form'),
    'acces arguments' => array('acces content'),
  );

  return $items;
}

//implements hook_form()
function form_example_form($form, &$form_state) {
  $form['mynumber'] = array (
    '#type' => 'textfield',
    '#title' => t('My Number'),
    '#size' => 10,
    '#maxlength' => 10,
    '#required' => TRUE,
    '#description' => t('Please enter a valid number'),
  );

  $form['mytextfield'] = array(
    '#type' => 'textfield',
    '#title' => t('My Textfield'),
    '#size' => 60,
    '#maxlength' => 128,
    '#required' => TRUE,
  );

  $form['mytext'] = array(
    '#title' => t('My Textarea'),
    '#type' => 'textarea',
    '#description' => t('Enter some text'),
    '#default value' => '',
    '#required' => TRUE,
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Add item'),
  );

  return $form;
}

2 个答案:

答案 0 :(得分:1)

'page callback' => 'drupal_get_form()错误,您需要从函数名中删除括号。正确的实施将是page callback' => 'drupal_get_form。并且acces => TRUE也是错误的,它必须是'访问回调',如果你设置固定的TRUE值,那么你不需要指定access arguments密钥。因为access callback无论如何都会返回TRUE。进一步reading ..

<强>更新 例如:

function form_example_permission() {
  return array(
    'submit form_example' => array(
      'title' => t('Submit form_example'),
      'description' => t('Submit the form_example form'),
    ),
  );
}


//implements hook_menu()
function form_example_menu() {
  $items['form'] = array(
    'title' => 'My Example Form',
    'type' => MENU_NORMAL_ITEM,
    'access callback' => 'user_access',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('form_example_form'),
    'access arguments' => array('submit form_example'),
  );

  return $items;
}

(你的代码中有一个拼写错误)不要忘记刷新缓存。

答案 1 :(得分:1)

请将acces更改为access并将drupal_get_form()更改为drupal_get_form,然后更改为clear a caches

function form_example_menu() {
  $items['form'] = array(
    'title' => 'My Example Form',
    'type' => MENU_NORMAL_ITEM,
    'access' => TRUE,
    'page callback' => 'drupal_get_form',
    'page arguments' => array('form_example_form'),
    'access arguments' => array('access content'),
  );

  return $items;
}