1

私の drupal Web サイトでは、カスタム モジュール (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と、「Payroll」というタイトルが表示されますが、URL にアクセスhr/payroll/employee/hours/overtimeしても、予想される「残業提出」ではなく「Payroll」と表示されます。

では、メニュー項目の $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" が static である場合、これらの値がページのコールバック関数にあることが既にわかっているため、提供されたアクセス引数は必要ありません。

また、なぜタイプを MENU_CALLBACK として使用しているのですか?

于 2013-03-21T17:53:36.657 に答える