0

Drupal 7 Hook_menu アクセス コールバックが正しいブール値を返さない。

始める前に。はい!キャッシュがクリアされました...たくさん。

テスト用に簡単な関数を実装しました。

$items['tutor_review_selection'] = array(
    'title'             => t('example'),
    'page callback'     => 'my_module_example_page',
    'access callback'   => my_module_access( array('administrator') ),
    'type'              => MENU_NORMAL_ITEM
);

function my_module_access( $roles ) {
    global $user;

    $check = array_intersect($roles, array_values($user->roles));

    return empty( $check ) ? FALSE : TRUE;
}

これは、ログインしているユーザーとログアウトしているユーザーに対して TRUE を返します。

重要な部分は次のとおりです。

「my_module_example_page」関数で「my_module_access」関数を呼び出すと、正しく動作します。

アクセスコールバックでこれが機能しない理由を誰かが明らかにすることはできますか?

たぶん、操作の順序に関係がありますか?

キャッシュがクリアされます。

4

1 に答える 1

1

Drupal 7 の hook_menu ドキュメントを確認すると、次のコードが表示されます。

  function mymodule_menu() {
    $items['abc/def'] = array(
      'page callback' => 'mymodule_abc_view',
      'page arguments' => array(1, 'foo'),
    );
    return $items;
  }

'page callback' は、コールバック関数名である文字列を受け入れます。その関数に送信される引数は、「ページ引数」配列で提供されます。

editおそらくパーミッションを作成し、そのパーミッションにロールを割り当ててから、特定のロールをチェックする代わりにパーミッションをチェックする必要があることに注意してください。

于 2014-06-28T01:28:28.390 に答える