Risposte:
"Access callback" è la funzione chiamata per verificare che l'utente abbia accesso alla pagina. Come caso speciale, potrebbe essere il valore TRUE
e in tal caso tutti gli utenti avrebbero accesso ad esso; in altre parole, l'autorizzazione di accesso verrebbe ignorata.
Nel caso in cui si stia utilizzando un nome di funzione per il valore "richiamata accesso" (per impostazione predefinita, si tratta di "accesso_utente"), è possibile utilizzare anche "argomenti di accesso", che è un array contenente gli argomenti passati alla funzione di richiamata accesso.
Come con altri callback di menu, gli argomenti devono essere una stringa o un numero; nel caso sia un numero, il valore verrà sostituito con un valore preso dal percorso del menu. Se vuoi evitare questa sostituzione, invece di un numero devi usare una stringa; ad esempio, l'utilizzo "1"
come uno per gli argomenti passati al callback di accesso eviterebbe la sostituzione automatica.
Questi sono alcuni esempi di dichiarazioni di callback di menu utilizzate dai moduli core di Drupal. (Gli esempi provengono dal codice Drupal 7, ma per quello che voglio sottolineare, questo non fa alcuna differenza.)
Questo è un esempio in cui il callback di accesso è 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,
);
Questo è un esempio in cui il callback di accesso non è un nome di funzione.
$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',
);
In questo caso, il callback di accesso è user_view_access () al quale viene passato, non il numero 1, ma un valore preso dal percorso del menu (che in questo caso è "user /% user"); questo è un caso particolare, poiché la funzione otterrà il valore restituito da 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',
);
Supponiamo che il menu precedente sia stato definito come segue e invocato con un percorso come "utente / ciao".
$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',
);
In questo caso, il callback di accesso avrebbe ricevuto come argomento il valore preso dal percorso (0 significa "utente" e 1 indica la parte dopo "utente" e la barra); in questo caso, quel valore è "ciao".
Per comprendere meglio questi argomenti con caratteri jolly, vedere Argomenti Caricatore caratteri jolly . La pagina della documentazione è contrassegnata con Drupal 6, ma quanto riportato è ancora valido per Drupal 7.
La richiamata di accesso è una funzione che esamina se alcuni utenti dispongono di autorizzazioni. Il callback di accesso predefinito è user_access ()
L'autorizzazione elenca gli argomenti degli argomenti che vengono esaminati dal callback di accesso. ad es. "accedi ai contenuti"
access callback
? Se fosse qualcosa di diverso user_access()
, ciò eliminerebbe la necessità di access arguments
?
access arguments
?