2 Stimmen

Drupal - Um die Sichtbarkeit eines Menüpunkts über benutzerdefinierte Berechtigungen umzuschalten

Ich verwende derzeit Drupal 7 und schreibe einen benutzerdefinierten Code, so dass Benutzer mit einer bestimmten Berechtigung ("Geschäftsdashboard verwenden") ein Menüelement in ihrem Hauptmenü sehen sollten. Das Problem ist, dass nur ich (Admin) dieses Menüelement sehen kann. Ich konnte eine benutzerdefinierte Berechtigung auf der Berechtigungsseite erstellen und sie so einstellen, dass der Zugriff auf "admin" und meine benutzerspezifische Rolle gewährt wird. Ich habe den folgenden Code implementiert (ignorieren Sie das "xxxxxx", das den Modulnamen anonymisiert, aber wissen Sie einfach, dass sie alle für den maschinenlesbaren Modulnamen stehen):

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

$items['xxxxxxx'] = array(
    'title' => 'Unternehmenseigentümer-Dashboard',
    'page callback' => '_xxxxxx_page',
    'access arguments' => array('Geschäftsdashboard verwenden'),
    'type' => MENU_NORMAL_ITEM,
);
return $items;
}

function xxxxxx_permission(){
    return array(
            'Geschäftsdashboard verwenden' => array(
            'title' => t('Zugriff auf das Geschäftsdashboard haben'),
            'description' => t('Ermöglichen Sie dem Benutzer, SMS-Nachrichten über Datenbankabfragen zu senden'),
        ),
    );
}

Wenn ich mich als meinen Testbenutzer anmelde, der die rollenspezifische Berechtigung "Geschäftsdashboard verwenden" hat, sehe ich das Menüelement nicht. Ich bin sicher, dass dies unglaublich einfach ist, aber ich habe stundenlang gegoogelt und den Code durchsucht. Jede Hilfe wäre sehr willkommen!

3voto

Muhammad Reda Punkte 25423

Kann das auch nicht herausfinden. Kannst du versuchen, den Zugriffsrückruf aufzuschlüsseln? Wenn es nicht funktioniert, gibt es dir zumindest einen Tipp, was los ist.

Dein Code kann so aussehen:

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

Sag mir, ob das funktioniert... Muhammad.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X