"Devolver llamada de acceso" es la función que se llama para verificar que el usuario tenga acceso a la página. Como caso especial, podría ser el valor TRUE
, y en ese caso todos los usuarios tendrían acceso a él; en otras palabras, se omitiría el permiso de acceso.
En el caso de que esté usando un nombre de función para el valor de "devolución de llamada de acceso" (por defecto, es "acceso de usuario"), también puede usar "argumentos de acceso", que es una matriz que contiene los argumentos pasados a la función de devolución de llamada de acceso.
Al igual que con otras devoluciones de llamada de menú, los argumentos deben ser una cadena o un número; en el caso de que sea un número, el valor será reemplazado por un valor tomado de la ruta del menú. Si desea evitar este reemplazo, en lugar de un número, debe usar una cadena; por ejemplo, el uso "1"
como uno para los argumentos pasados a la devolución de llamada de acceso evitaría el reemplazo automático.
Estos son algunos ejemplos de declaraciones de devolución de llamada de menú utilizadas desde los módulos principales de Drupal. (Los ejemplos son del código Drupal 7, pero por lo que quiero señalar, eso no hace ninguna diferencia).
Este es un ejemplo donde la devolución de llamada de acceso es 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,
);
Este es un ejemplo donde la devolución de llamada de acceso no es un nombre de función.
$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',
);
En este caso, la devolución de llamada de acceso es user_view_access () a la que se pasa, no el número 1, sino un valor tomado de la ruta del menú (que en este caso es "usuario /% usuario"); Este es un caso particular, ya que la función obtendrá el valor devuelto por 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',
);
Supongamos que el menú anterior se definió de la siguiente manera e invocó con una ruta como "usuario / hola".
$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',
);
En este caso, la devolución de llamada de acceso habría recibido como argumento el valor tomado de la ruta (0 significa "usuario" y 1 significa la parte después de "usuario" y la barra inclinada); en este caso, ese valor es "hola".
Para comprender mejor estos argumentos comodín, consulte Argumentos del cargador comodín . La página de documentación está etiquetada con Drupal 6, pero lo que se informa sigue siendo válido para Drupal 7.