2012-05-08 7 views
2

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

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

「ビジネスダッシュボードを使用する」メニュー項目が表示されません。私はこれが信じられないほどシンプルだと確信していますが、私はグーグルとコードで何時間も悩んでいます。どんな助けでも大歓迎です!

答えて

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

あなたのコードは次のように行くことができます。

+2

奇妙なことに、私がしなければならなかったのは、マシンの読み取り可能なパーミッションを "use_business_dashboard"に変更してキャッシュをクリアすることでした。 – Eric

+0

答えを選んでください! – emc

関連する問題