it-swarm-ko.tech

사용자 정의 모듈의 기본 라우팅

내 첫 번째 모듈을 작성하려고하는데 hook_menu를 사용하여 페이지를 라우팅하고 있습니다. 모듈은 다단계 양식과 두 개의 정적 콘텐츠 페이지로 구성됩니다.

/**
 * Implements hook_menu().
 */
function order_menu() {
  $items = array();

  $items['order/form'] = array(
    'title' => 'Order Form',
    'description' => 'Order multistep form.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('order_form'),
    'access callback' => TRUE,
    'file' => 'order_form.inc',
    'tpe' => MENU_CALLBACK,
  );

  $items['order/cancel'] = array(
    'title' => 'Order Cancelled',
    'description' => 'Order cancelled.',
    'page callback' => 'order_cancel',
    'access callback' => TRUE,
    'file' => 'order_form.inc',
    'type' => MENU_CALLBACK,
  );

  $items['order/success'] = array(
    'title' => 'Order Success',
    'description' => 'Order Successful.',
    'page callback' => 'order_success',
    'access callback' => TRUE,
    'file' => 'order_form.inc',
    'type' => MENU_CALLBACK,
  );

  return $items;
}

내가 원하는 것은 'example.com/order'에서 'example.com/order/form'에 액세스 할 수 있지만 메뉴 후크를 $ items [ 'order/form']에서 $ items [ 'order로 변경하면 '] 페이지를 찾을 수 없음으로 표시됩니다.

Example.com/order에서 원하는 콘텐츠를 표시하도록 모듈을 얻는 방법에 대한 제안 사항이 있습니까?

2
cbaigorri

코드를 변경 한 후 Drupal 메뉴를 다시 작성하도록 강요 했습니까? 그렇게하지 않으면 Drupal은 이전에 정의 된 메뉴를 사용합니다.

강제로 Drupal 메뉴를 다시 작성하려면 모듈 페이지 (설치된 모든 모듈 목록을 보여주는 관리 페이지)를 방문하여 모듈을 비활성화 한 다음 다시 활성화하면됩니다. 두 가지 작업이 꼭 필요한 것은 아닙니다. 모듈을 활성화하거나 비활성화하지 않고 해당 페이지에있는 "저장"버튼을 클릭하면 동일한 효과를 얻을 수 있습니다.
Drupal은 hook_menu()hook_menu_alter()의 모든 구현을 호출하고 모듈에서 정의 된 마지막 메뉴 콜백을 가져옵니다.

또는 코드에서 menu_rebuild () 를 호출하거나 Devel 을 설치할 수 있습니다. 여기에는 강제로 Drupal) 할 수있는 링크가 포함 된 블록이 있습니다. 캐시하는 메뉴 목록을 다시 작성합니다.

2
kiamlaluno

문제는 order이 메뉴 항목으로 정의되어 있지 않다는 것입니다. 이를 수정하는 쉬운 방법은 후크 메뉴 정의에 포함하는 것입니다.

/**
 * Implements hook_menu().
 */
function order_menu() {
  $items = array();

  $items['order'] = $items['order/form'] = array(
    'title' => 'Order Form',
    'description' => 'Order multistep form.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('order_form'),
    'access callback' => TRUE,
    'file' => 'order_form.inc',
    'type' => MENU_CALLBACK,
  );

  ...

}

MENU_DEFAULT_LOCAL_TASK 메뉴 항목에 order/form를 사용할 수 있지만 기본적으로 탭이 생성 될 것이라고 생각합니다.

이러한 변경을 수행 한 후에는 캐시를 지우는 것을 잊지 마십시오.

2
googletorp