web-dev-qa-db-fra.com

Quelle est la différence entre les arguments d'accès et le rappel d'accès?

Quelle est la différence entre les arguments d'accès et le rappel d'accès?

Supposons que je définisse le rappel d'accès sur 'user_access', Et array('custom permission') est la valeur des arguments d'accès.

Qu'est-ce que ça veut dire? Comment s'influencent-ils mutuellement?

20
user1359

"Rappel d'accès" est la fonction qui est appelée pour vérifier que l'utilisateur a accès à la page. Comme cas particulier, il pourrait s'agir de la valeur TRUE, et dans ce cas, tous les utilisateurs y auraient accès; en d'autres termes, l'autorisation d'accès serait contournée.

Dans le cas où vous utilisez un nom de fonction pour la valeur "rappel d'accès" (par défaut, c'est "user_access"), vous pouvez également utiliser des "arguments d'accès", qui est un tableau contenant les arguments passés à la fonction de rappel d'accès.
Comme pour les autres rappels de menu, les arguments doivent être une chaîne ou un nombre; dans le cas où il s'agit d'un nombre, la valeur sera remplacée par une valeur prise dans le chemin du menu. Si vous voulez éviter ce remplacement, au lieu d'un nombre, vous devez utiliser une chaîne; par exemple, l'utilisation de "1" comme argument pour les arguments passés au rappel d'accès éviterait le remplacement automatique.

Ce sont quelques exemples de déclarations de rappel de menu utilisées à partir de Drupal modules de base. (Les exemples sont de Drupal 7 code, mais pour ce que je veux souligner, cela ne fait aucune différence.)

Il s'agit d'un exemple où le rappel d'accès est ser_access () .

  $items['file/progress'] = array(
    'page callback' => 'file_ajax_progress', 
    'delivery callback' => 'ajax_deliver', 
    'access arguments' => array('access content'), 
    'theme callback' => 'ajax_base_page_theme', 
    'type' => MENU_CALLBACK,
  );

Il s'agit d'un exemple où le rappel d'accès n'est pas un nom de fonction.

  $items['user'] = array(
    'title' => 'User account', 
    'title callback' => 'user_menu_title', 
    'page callback' => 'user_page', 
    'access callback' => TRUE, 
    'file' => 'user.pages.inc', 
    'weight' => -10, 
    'menu_name' => 'user-menu',
  );

Dans ce cas, le rappel d'accès est ser_view_access () auquel est passé, pas le numéro 1, mais une valeur tirée du chemin de menu (qui dans ce cas est "utilisateur /% utilisateur"); c'est un cas particulier, car la fonction obtiendra la valeur retournée par user_load().

  $items['user/%user'] = array(
    'title' => 'My account', 
    'title callback' => 'user_page_title', 
    'title arguments' => array(1), 
    'page callback' => 'user_view_page', 
    'page arguments' => array(1), 
    'access callback' => 'user_view_access', 
    'access arguments' => array(1),
    // By assigning a different menu name, this item (and all registered child
    // paths) are no longer considered as children of 'user'. When accessing the
    // user account pages, the preferred menu link that is used to build the
    // active trail (breadcrumb) will be found in this menu (unless there is
    // more specific link), so the link to 'user' will not be in the breadcrumb. 
    'menu_name' => 'navigation',
  );

Supposons que le menu précédent ait été défini comme suit et appelé avec un chemin d'accès tel que "utilisateur/bonjour".

  $items['user/%'] = array(
    'title' => 'My account', 
    'title callback' => 'user_page_title', 
    'title arguments' => array(1), 
    'page callback' => 'user_view_page', 
    'page arguments' => array(1), 
    'access callback' => 'user_view_access', 
    'access arguments' => array(1),
    // By assigning a different menu name, this item (and all registered child
    // paths) are no longer considered as children of 'user'. When accessing the
    // user account pages, the preferred menu link that is used to build the
    // active trail (breadcrumb) will be found in this menu (unless there is
    // more specific link), so the link to 'user' will not be in the breadcrumb. 
    'menu_name' => 'navigation',
  );

Dans ce cas, le rappel d'accès aurait reçu en argument la valeur tirée du chemin (0 signifie "utilisateur" et 1 signifie la partie après "utilisateur" et la barre oblique); dans ce cas, cette valeur est "bonjour".

Pour mieux comprendre ces arguments génériques, consultez Arguments du chargeur générique . La page de documentation est étiquetée Drupal 6, mais ce qui a été signalé est toujours valable pour Drupal 7.

28
kiamlaluno

Le rappel d'accès est une fonction qui examine si certains utilisateurs ont des autorisations. Le rappel d'accès par défaut est ser_access ()

La liste des arguments d'accès autorise ceux qui sont examinés par rappel d'accès. par exemple. "accéder au contenu"

4
Shoaib Nawaz