Jawaban ini mengarah pada diskusi tentang cara terbaik untuk mengarahkan pengguna ke halaman tertentu jika mereka tidak memiliki akses ke halaman yang mereka coba akses.
Salah satu opsi adalah untuk mengatur akses balik ke true dan kemudian mengarahkan pengguna ke halaman panggilan balik. Sementara ini tampaknya valid saya pikir itu mencampur fungsionalitas akses dengan fungsi membangun halaman di halaman panggilan balik.
Misalnya
function hook_menu() {
$items['player/my_page'] = array(
'title' => t('My Page'), // note this is a required parameter
'access callback' => TRUE,
'page callback' => 'some_function',
);
return $items;
}
function some_function() {
global $user;
if(!$user->uid) { // here checking if the user is logged in but could be checking for a specific permission or field value
$dest = drupal_get_destination();
drupal_goto('user/login', $dest); // this remembers where the user is coming from
}
// carry on building rest of page
}
Pilihan lain adalah mengatur fungsi akses balik untuk memanggil fungsi yang memeriksa apakah pengguna memiliki akses, tetapi alih-alih mengembalikan false, itu akan mengarahkan pengguna ke halaman lain. Ini bagus karena memisahkan logika akses dan logika pembuatan halaman. Namun tujuan dari panggilan balik akses adalah untuk mengembalikan nilai boolean, jadi ini melanggar logika itu dengan mengarahkan ulang pengguna.
Misalnya
function hook_menu() {
$items['player/my_page'] = array(
'title' => t('My Page'), // note this is a required parameter
'access callback' => 'check_access',
'page callback' => 'some_function',
);
return $items;
}
function check_access() {
global $user;
// here checking if the user is logged in but could be checking for a specific permission or field value
if(!$user->uid) {
$dest = drupal_get_destination();
drupal_goto('user/login', $dest);
}
return TRUE;
}
Apakah ada efek yang tidak diinginkan dari mengarahkan ulang pengguna dalam panggilan balik akses yang saya tidak ketahui?
Menurut Anda apa praktik terbaik di sini?