Erişim argümanları ve erişim geri çağırma arasındaki fark nedir?


21

Erişim argümanları ve erişim geri çağırma arasındaki fark nedir?

Ben erişim geri arama ayarlamak varsayalım 'user_access've array('custom permission')erişim argümanlar için değerdir.

Bu ne anlama geliyor? Birbirlerini nasıl etkilerler?

Yanıtlar:


27

"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 TRUEve 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.


harika bir açıklama. Gereksinimime göre, bazı özel düğmeler "oy ver" diyorlar, sadece kimliği doğrulanmış kullanıcı tarafından işlenmeli, ancak düğme de anonim olarak gösterilmeli ve anonim bir kullanıcı tıkladığında giriş sayfasına yönlendirmeli ve işleme devam etmeli. Bu özel senaryoda, düğmeyi isimsiz göstermek için özel erişim koşulu var mı? Bu yazının yorumlanması, bu yazıyı daha eksiksiz hale getireceğinden dolayı. Bookmarked .. :)
kiranking,

4

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"


Başka ne değeri olabilir access callback? Başka bir şey user_access()olsaydı, bu ihtiyacı ortadan kaldırabilir access argumentsmiydi?
user1359

2
Ne isterseniz. DOĞRU veya YANLIŞ döndüren herhangi bir işlev.
Berdir

Demek ihtiyacın yok access arguments?
user1359

Evet o zaman bunu atlayabilirsiniz
Shoaib Nawaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.