web-dev-qa-db-fra.com

Routage par défaut du module personnalisé

J'essaie d'écrire mon premier module et j'utilise Hook_menu pour acheminer les pages. Le module consiste en une forme en plusieurs étapes et deux pages de contenu statiques.

/**
 * 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;
}

Ce que je veux faire, c'est être capable d'accéder à 'exemple.com/order/form' à partir de 'example.com/order' mais lorsque je modifie le crochet de menu de $ d'éléments ['ordre/formulaire'] à $ éléments ['ordre '] Il affiche comme page non trouvée.

Toute suggestion sur la manière de faire passer le module pour afficher le contenu que je veux de l'exemple.com/order?

2
cbaigorri

Le problème est que order n'est pas défini comme un élément de menu. Un moyen facile de résoudre ce problème serait d'y inclure dans la définition du menu du crochet:

/**
 * 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,
  );

  ...

}

Vous pouvez utiliser utiliser le MENU_DEFAULT_LOCAL_TASK pour le order/form élément de menu, mais je crois que cela produira un onglet par défaut, ce qui pourrait ne pas être ce que vous voulez.

N'oubliez pas d'effacer le cache après ces changements.

2
googletorp