菜单中的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)?致命错误:函数名必须是…中的字符串。该路径的默认页面回调没有参数,我以为它接受了帐户。编辑应该对它进行排序