Réponses:
"Rappel d'accès" est la fonction qui est appelée pour vérifier que l'utilisateur a accès à la page. Dans un 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 "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 "1"
comme un 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 des modules principaux de Drupal. (Les exemples proviennent du code Drupal 7, 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 user_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 user_view_access () auquel est passé, pas le numéro 1, mais une valeur tirée du chemin de menu (qui dans ce cas est "user /% user"); c'est un cas particulier, car la fonction obtiendra la valeur renvoyé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é reste valable pour Drupal 7.
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 user_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"
access callback
? S'il s'agissait d'autre chose user_access()
, est-ce que cela éliminerait le besoin de access arguments
?
access arguments
?