【问题标题】:Drupal page callback in menu_alter. How to use callback before redefiningmenu_alter 中的 Drupal 页面回调。如何在重新定义之前使用回调
【发布时间】:2023-03-30 17:14:01
【问题描述】:

在模块中用户:

  $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_user_edit_page* 中的 my_condition 不为 TRUE,如何使用来自模块用户的默认页面回调?

【问题讨论】:

标签: drupal drupal-7


【解决方案1】:

怎么样……

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);
   }
}

【讨论】:

  • $existing_callback($account); ?致命错误:函数名称必须是...中的字符串
  • 啊该路径的默认页面回调没有参数,我以为它接受了帐户。编辑应该对其进行排序
猜你喜欢
  • 2013-06-19
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多