Пример модуля Drupal 7, страница не найдена, почему? - PullRequest
0 голосов
/ 23 сентября 2011

Я написал простой пример тестового модуля, 2 файла, test.module, test.info и включил их в модули drupal 7.

Я очистил весь кеш, и все же, когда я пытаюсь перейти на localhost / drupal / hello, я получаю страницу drupal 404 не найденной, почему это так?

Вот мой код:

<?php

function test_world_help($section) {
  switch ($section) {
    case 'admin/help#hello_world':
      $output = '<p>Hello world help...</p>';
      return $output;
    case 'admin/modules#description':
      return 'Hello world module description...';
  }
}

function test_world_menu($may_cache) {
  $items = array();

  if ($may_cache) {
  }
  else {
    $items['hello'] = array(
      'title' => 'Hello world page...', 
      'callback' => 'test_world_page', 
      'access' => TRUE, 
      'type' => MENU_CALLBACK 
    );
  }

  return $items;
}

function test_world_page() {
  return '<p>Hello world!</p>';
}

Ответы [ 3 ]

2 голосов
/ 23 сентября 2011

Вы уже отправили почти один и тот же вопрос один раз и дважды ранее. Почему бы вам не обновить оригинал вместо того, чтобы публиковать новые?

  • У hook_menu () нет аргумента $ may_cache в Drupal 7. Вы должны удалить его. Однако это не должно решить вашу проблему, так как она не установлена ​​и ложна. Таким образом, $ items все еще должны быть заполнены.

  • Правильно, как говорит jprofitt, что вы должны изменить «обратный вызов» на «обратный вызов страницы».

  • Не существует такой вещи, как «доступ», но есть «обратный вызов доступа» и «аргументы доступа». Скорее всего, вы ищете «обратный вызов доступа». Тем не менее, вы не можете просто установить его в «true». Ожидается имя функции, которая возвращает либо «true», либо «false». По умолчанию используется user_access, поэтому вы должны просто оставить его таким. Однако вам может потребоваться установить для «аргументов доступа» что-то вроде «доступа к контенту».

Работает ли следующий фрагмент кода лучше?

function test_world_menu() {

  $items = array();

  $items['hello'] = array(
    'title' => 'Hello World!', 
    'page callback' => 'test_world_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK 
    );

  return $items;
}

Похоже, вы на самом деле не смотрели документацию . Я могу быть не прав. Тем не менее, документация на api.drupal.org - это всегда хорошее начало, когда вы хотите изучить основы того, как что-то работает.

1 голос
/ 23 сентября 2011

Вам, вероятно, следует изменить 'callback' на 'page callback', поскольку я не верю, что у hook_menu () есть просто опция "обратного вызова". И поскольку вы работаете с Drupal 7, его hook_menu () фактически не имеет параметров.

0 голосов
/ 23 сентября 2011

Удалите и переустановите ваш пользовательский модуль. Я надеюсь, что это поможет вам. Потому что ядру drupal необходимо знать только что созданный путь, созданный с помощью hook_menu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...