„Dostęp zwrotny” to funkcja wywoływana w celu sprawdzenia, czy użytkownik ma dostęp do strony. W szczególnym przypadku może to być wartość TRUE
iw takim przypadku wszyscy użytkownicy mieliby do niej dostęp; innymi słowy pozwolenie na dostęp zostanie ominięte.
Jeśli używasz nazwy funkcji dla wartości „callback access” (domyślnie jest to „user_access”), możesz także użyć „argumentów dostępu”, czyli tablicy zawierającej argumenty przekazane do funkcji wywołania zwrotnego dostępu.
Podobnie jak w przypadku innych wywołań zwrotnych menu, argumenty muszą być ciągiem lub liczbą; w przypadku, gdy jest to liczba, wartość zostanie zastąpiona wartością pobraną ze ścieżki menu. Jeśli chcesz uniknąć tej zamiany, zamiast liczby musisz użyć łańcucha; na przykład użycie "1"
jako jednego argumentu przekazanego do wywołania zwrotnego dostępu pozwoliłoby uniknąć automatycznej zamiany.
Oto kilka przykładów deklaracji zwrotnych menu używanych z podstawowych modułów Drupala. (Przykłady pochodzą z kodu Drupal 7, ale na to, na co chcę zwrócić uwagę, nie robi to żadnej różnicy).
Jest to przykład, w którym wywołanie zwrotne dostępu to 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,
);
Jest to przykład, w którym wywołanie zwrotne dostępu nie jest nazwą funkcji.
$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',
);
W tym przypadku wywołaniem zwrotnym dostępu jest user_view_access (), do którego przekazywana jest nie liczba 1, ale wartość pobrana ze ścieżki menu (która w tym przypadku to „użytkownik /% użytkownik”); jest to szczególny przypadek, ponieważ funkcja otrzyma wartość zwróconą przez 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',
);
Załóżmy, że poprzednie menu zostało zdefiniowane w następujący sposób i wywołane ze ścieżką typu „użytkownik / cześć”.
$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',
);
W tym przypadku wywołanie zwrotne dostępu otrzymałoby jako argument wartość pobraną ze ścieżki (0 oznacza „użytkownik”, a 1 oznacza część za „użytkownikiem” i ukośnik); w tym przypadku ta wartość to „cześć”.
Aby lepiej zrozumieć te argumenty symboli zastępczych, zobacz Argumenty modułu ładującego symbole wieloznaczne . Strona dokumentacji jest oznaczona jako Drupal 6, ale to, co zostało zgłoszone, nadal obowiązuje dla Drupal 7.
Oddzwonienie dostępu to funkcja, która sprawdza, czy jakiś użytkownik ma jakieś uprawnienia. Domyślne wywołanie zwrotne dostępu to user_access ()
Argumenty dostępu zawierają listę uprawnień, które są sprawdzane przez wywołanie zwrotne dostępu. np. „dostęp do treści”
źródło
access callback
? Gdyby to było coś innegouser_access()
, czy to wyeliminowałoby potrzebęaccess arguments
?access arguments
?