Yanıtlar:
"Erişim geri araması", kullanıcının sayfaya erişimi olduğunu doğrulamak için çağrılan işlevdir. Özel bir durum olarak, değer olabilir TRUE
ve bu durumda tüm kullanıcılar buna erişebilir; Başka bir deyişle, erişim izni atlanacak.
"Erişim geri çağrısı" değeri için bir işlev adı kullanıyorsanız (varsayılan olarak, "kullanıcı_ erişimi"), o zaman erişim geri çağırma işlevine iletilen argümanları içeren bir dizi olan "erişim bağımsız değişkenleri" de kullanabilirsiniz.
Diğer menü geri aramalarında olduğu gibi, argümanlar bir dize veya bir sayı olmalıdır; Bir sayı olması durumunda değer, menü yolundan alınan değer ile değiştirilecektir. Bu değişiklikten kaçınmak istiyorsanız, bir sayı yerine bir dize kullanmanız gerekir; Örneğin, "1"
erişim geri aramasına iletilen argümanlar için birinin kullanılması otomatik değiştirmeyi önler.
Bunlar Drupal çekirdek modüllerinden kullanılan menü geri çağırma bildirimlerinin bir örneği. (Örnekler Drupal 7 kodundandır, ancak belirtmek istediğim şey için, bu herhangi bir fark yaratmaz.)
Bu, geri arama erişiminin user_access () olduğu bir örnektir .
$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,
);
Bu, geri arama erişiminin bir işlev adı olmadığı bir örnektir.
$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',
);
Bu durumda, erişim geri çağrısı user_view_access () 'dir, 1 sayısı değil, (bu durumda "user /% user" olan) menü yolundan alınan değerdir; bu, fonksiyonun geri döndürdüğü değeri alacağı için özel bir durumdur 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',
);
Önceki menünün aşağıdaki gibi tanımlandığını ve "kullanıcı / merhaba" gibi bir yolla çağrıldığını varsayalım.
$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',
);
Bu durumda, erişim geri çağrısı, yoldan alınan değeri argüman olarak alırdı (0, "kullanıcı" anlamına gelir ve 1, "kullanıcı" ve eğik çizgiden sonraki kısım anlamına gelir); bu durumda, bu değer "merhaba" dır.
Bu joker karakter argümanlarını daha iyi anlamak için, bkz. Wildcard Loader Bağımsız Değişkenleri . Dokümantasyon sayfası Drupal 6 olarak etiketlendi, ancak rapor edilenler Drupal 7 için hala geçerli.
Erişim geri araması, bazı kullanıcıların bazı izinleri olup olmadığını inceleyen bir işlevdir. Varsayılan erişim geri çağrısı user_access () şeklindedir.
Erişim argümanları erişim izni ile incelenen izin listeler. örneğin "erişim içeriği"
access callback
? Başka bir şey user_access()
olsaydı, bu ihtiyacı ortadan kaldırabilir access arguments
miydi?
access arguments
?