2

私は現在 Drupal 7 を使用しており、特定の権限 (「ビジネス ダッシュボードの使用」) を持つユーザーがメイン メニューにメニュー項目を表示するようにカスタム コードを作成しています。問題は、私 (管理者) だけがこのメニュー項目を表示できることです。権限ページでカスタム権限を作成し、「管理者」とユーザー固有の役割にアクセスできるように設定し、次のコードを実装しました(モジュール名の代わりにある「xxxxxx」は気にしないでください。今のところは匿名のままにしたいと思いますが、それらはすべて機械可読なモジュール名の代わりにあることを知っておいてください):

function xxxxxx_menu(){
$items = array();

$items['xxxxxxx'] = array(
    'title' => 'Business Owner Dashboard',
    'page callback' => '_xxxxxx_page',
    'access arguments' => array('use business dashboard'),
    'type' => MENU_NORMAL_ITEM,
);
return $items;
}

function xxxxxx_permission(){
    return array(
            'use business dashboard' => array(
            'title' => t('Have access to business dashboard'),
            'description' => t('Allow user to send out SMS messages via         database query forms'),
        ),
    );
}

「ビジネス ダッシュボードを使用する」というロール固有の権限を持つテスト ユーザーとしてログインすると、メニュー項目が表示されません。これは信じられないほど単純だと確信していますが、私は何時間もグーグルでコードを調べていました。どんな助けでも大歓迎です!

4

1 に答える 1

3

これも解りません。アクセス コールバックを分解してみてください。うまくいかなかった場合は、少なくとも何が起こっているかについてのヒントを得ることができます。

コードは次のようになります。

function xxxxxx_menu(){
$items = array();

$items['xxxxxxx'] = array(
    'title' => 'Business Owner Dashboard',
    'page callback' => '_xxxxxx_page',
    'access callback' => 'my_custom_access_callback',
    'type' => MENU_NORMAL_ITEM,
);
return $items;
}

function my_custom_access_callback()
{
    if(user_access('use business dashboard'))
        return TRUE;

    return FALSE;
}

これがうまくいくかどうか私まで... ムハンマド。

于 2012-05-08T14:44:20.293 に答える