1

对于我的 drupal 网站,在我的自定义模块 (hr_payroll.module) 中,我有以下内容来添加 URL 处理程序:

function hr_payroll_menu() {
  $items['hr/payroll/employee/hours/overtime'] = array(
    'title' => 'Overtime Submission',
    'page callback' => 'hr_payroll_page',
    'page arguments' => array('employee','hours','overtime'),
    'access arguments' => array('access hr payroll'),
    'type' => MENU_CALLBACK,
  );
  $items['hr/payroll'] = array(
    'title' => 'Payroll',
    'page callback' => 'hr_payroll_intro',
    'access arguments' => array('access hr payroll'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

在我的网站上是一个仅包含的块 echo(drupal_get_title());

如果我转到 URL hr/payroll,它会显示标题“工资单”,但如果我转到 URL hr/payroll/employee/hours/overtime,它仍然显示“工资单”而不是预期的“加班提交”

那么我完全误解了菜单项的 $title 元素或function drupal_get_title()工作原理是什么?

4

1 回答 1

0

我相信您根据您想要做的事情以错误的方式使用 hook_menu。第一个菜单

$items['hr/payroll/employee/hours/overtime'] = array(
    'title' => 'Overtime Submission',
    'page callback' => 'hr_payroll_page',
    'page arguments' => array('employee','hours','overtime'),
    'access arguments' => array('access hr payroll'),
    'type' => MENU_CALLBACK,
  );

参数“员工”“小时”“加班”是静态的还是动态的?,并且我看到提供的页面参数是相同的 ('employee','hours','overtime') 如果它们是动态的,则使用通配符代替

 $items['hr/payroll/%/%/%'] = array(
        'title' => 'Overtime Submission',
        'page callback' => 'hr_payroll_page',
        'page arguments' => array(2,3,4),
        'access arguments' => array('access hr payroll'),
        'type' => MENU_CALLBACK,
      );

如果菜单链接“hr/payroll/employee/hours/overtime”是静态的,这意味着您不需要提供的访问参数,因为您已经知道这些值在您的页面回调函数中是什么。

还有你为什么使用类型作为 MENU_CALLBACK。这是有原因的还是随机的?

于 2013-03-21T17:53:36.657 回答