it-swarm.it

Qual è la differenza tra gli argomenti di accesso e il callback di accesso?

Qual è la differenza tra gli argomenti di accesso e il callback di accesso?

Supponiamo di aver impostato il callback di accesso su 'user_access' E array('custom permission') è il valore per gli argomenti di accesso.

Cosa significa? In che modo si influenzano a vicenda?

20
user1359

"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 utilizzi 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 per 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'uso di "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 da Drupal moduli principali. (Gli esempi sono tratti da Drupal 7 codice, ma per quello che voglio sottolineare, questo non fa alcuna differenza.)

Questo è un esempio in cui il callback di accesso è 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,
  );

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 è ser_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 è taggata Drupal 6, ma quanto riportato è ancora valido per Drupal 7.

28
kiamlaluno

Il callback di accesso è una funzione che esamina se alcuni utenti dispongono di autorizzazioni. Il callback di accesso predefinito è ser_access ()

L'autorizzazione elenca gli argomenti degli argomenti che vengono esaminati dal callback di accesso. per esempio. "accedi ai contenuti"

4
Shoaib Nawaz