菜单中的Drupal页面回调。如何在重新定义之前使用回调

菜单中的Drupal页面回调。如何在重新定义之前使用回调,drupal,drupal-7,Drupal,Drupal 7,模块内用户: $items['user/%user/edit'] = array( 'title' => 'Edit', 'page callback' => 'drupal_get_form', 'page arguments' => array('user_profile_form', 1), 'access callback' => 'user_edit_access', 'access arguments' =>

模块内用户:

  $items['user/%user/edit'] = array(
    'title' => 'Edit',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('user_profile_form', 1),
    'access callback' => 'user_edit_access',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'file' => 'user.pages.inc',
  );
在我的模块中:

function MYMODULE_menu_alter(&$items) {
   $items['user/%user/edit']['access callback'] = 'MYMODULE_can_edit_user';
   $items['user/%user/edit']['access arguments'] = array(1);
   $items['user/%user/edit']['page callback'] = 'MYMODULE_user_edit_page';
}


function MYMODULE_user_edit_page($account){
   if(my_condition){go to page... }
   else { use callback from module User }
}
如果函数*MYMODULE\u User\u edit\u page*中的my\u条件不正确,如何使用模块用户的默认页面回调?

那么

function MYMODULE_menu_alter(&$items) {
  $items['user/%user/edit']['access callback'] = 'MYMODULE_can_edit_user';
  $items['user/%user/edit']['access arguments'] = array(1);

  $current_callback = $items['user/%user/edit']['page callback'];

  $items['user/%user/edit']['page callback'] = 'MYMODULE_user_edit_page';
  $items['user/%user/edit']['page arguments'][] = $current_callback;
}


function MYMODULE_user_edit_page($existing_callback = NULL){
   if(my_condition){go to page... }
   elseif (!empty($existing_callback)) {
     $existing_callback($account);
   }
}

MYMODULE菜单中缺少“return$items;”,您的代码将正常工作。检查此链接$existing_callback($account)?致命错误:函数名必须是…中的字符串。该路径的默认页面回调没有参数,我以为它接受了帐户。编辑应该对它进行排序