it-swarm-id.com

Apa perbedaan antara argumen akses dan akses panggilan balik?

Apa perbedaan antara argumen akses dan akses panggilan balik?

Misalkan saya mengatur akses balik ke 'user_access', Dan array('custom permission') adalah nilai untuk argumen akses.

Apa artinya? Bagaimana mereka saling mempengaruhi?

20
user1359

"Akses panggilan balik" adalah fungsi yang dipanggil untuk memverifikasi bahwa pengguna memiliki akses ke halaman tersebut. Sebagai kasus khusus, ini bisa berupa nilai TRUE, dan dalam hal itu semua pengguna akan memiliki akses ke sana; dengan kata lain, izin akses akan dilewati.

Jika Anda menggunakan nama fungsi untuk nilai "akses panggilan balik" (secara default, itu adalah "user_access"), maka Anda juga dapat menggunakan "argumen akses", yang merupakan array yang berisi argumen yang diteruskan ke fungsi akses panggilan balik.
Seperti panggilan balik menu lainnya, argumen harus berupa string, atau angka; dalam kasus ini adalah angka, nilainya akan diganti dengan nilai yang diambil dari jalur menu. Jika Anda ingin menghindari penggantian ini, alih-alih nomor Anda harus menggunakan string; misalnya, menggunakan "1" sebagai argumen yang diteruskan ke panggilan balik akses akan menghindari penggantian otomatis.

Ini adalah beberapa contoh deklarasi panggilan balik menu yang digunakan dari Drupal. (Contohnya dari Drupal 7, tetapi untuk apa yang ingin saya tunjukkan, itu tidak ada bedanya.)

Ini adalah contoh di mana akses balik adalah 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,
  );

Ini adalah contoh di mana akses balik bukan nama fungsi.

  $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',
  );

Dalam kasus ini, panggilan balik akses adalah ser_view_access () yang diteruskan, bukan nomor 1, tetapi nilai yang diambil dari jalur menu (yang dalam hal ini adalah "pengguna /% pengguna"); ini adalah kasus khusus, karena fungsi akan mendapatkan nilai yang dikembalikan oleh 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',
  );

Misalkan menu sebelumnya didefinisikan sebagai berikut, dan dipanggil dengan path seperti "user/hello."

  $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',
  );

Dalam hal ini, panggilan balik akses akan menerima sebagai argumen nilai yang diambil dari path (0 berarti "pengguna," dan 1 berarti bagian setelah "pengguna" dan garis miring); dalam hal ini, nilai itu adalah "halo."

Untuk lebih memahami argumen wildcard ini, lihat Wildcard Loader Arguments . Halaman dokumentasi ditandai Drupal 6, tetapi apa yang dilaporkan masih berlaku untuk Drupal 7.

28
kiamlaluno

Akses panggilan balik adalah fungsi yang memeriksa jika beberapa pengguna memiliki beberapa izin. Panggilan balik akses default adalah ser_access ()

Argumen akses mendaftar izin yang diperiksa oleh akses balik panggilan. misalnya "mengakses konten"

4
Shoaib Nawaz