Apa perbedaan antara argumen akses dan akses panggilan balik?
Misalkan saya mengatur akses balik ke 'user_access'
, dan array('custom permission')
merupakan nilai untuk argumen akses.
Apa artinya? Bagaimana mereka saling mempengaruhi?
"Akses panggilan balik" adalah fungsi yang dipanggil untuk memverifikasi pengguna memiliki akses ke halaman. Sebagai kasus khusus, itu bisa menjadi 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 nomor; 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 untuk diteruskan ke panggilan balik akses akan menghindari penggantian otomatis.
Ini adalah beberapa contoh deklarasi panggilan balik menu yang digunakan dari modul inti Drupal. (Contohnya adalah dari kode Drupal 7, tetapi untuk apa yang ingin saya tunjukkan, itu tidak ada bedanya.)
Ini adalah contoh di mana panggilan balik akses adalah 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,
);
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 hal ini, panggilan balik akses adalah user_view_access () yang diteruskan, bukan angka 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 jalur seperti "pengguna / halo."
$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.
Akses panggilan balik adalah fungsi yang memeriksa jika beberapa pengguna memiliki beberapa izin. Panggilan balik akses default adalah user_access ()
Argumen akses mendaftar izin yang diperiksa oleh akses balik panggilan. mis. "mengakses konten"
sumber
access callback
? Jika itu bukan sesuatu yang lainuser_access()
, apakah itu akan menghilangkan kebutuhan akanaccess arguments
?access arguments
?