जवाबों:
"एक्सेस कॉलबैक" वह फ़ंक्शन है जिसे उपयोगकर्ता को पृष्ठ तक पहुंच सत्यापित करने के लिए कहा जाता है। विशेष मामले के रूप में, इसका मूल्य हो सकता है TRUE
, और उस स्थिति में सभी उपयोगकर्ताओं तक इसकी पहुंच होगी; दूसरे शब्दों में, प्रवेश की अनुमति को दरकिनार कर दिया जाएगा।
उस मामले में जब आप "एक्सेस कॉलबैक" मान के लिए एक फ़ंक्शन नाम का उपयोग कर रहे हैं (डिफ़ॉल्ट रूप से, यह "user_access" है), तो आप "एक्सेस तर्क" का भी उपयोग कर सकते हैं, जो एक सरणी है जिसमें एक्सेस कॉलबैक फ़ंक्शन को पारित किए गए तर्क हैं।
अन्य मेनू कॉलबैक के साथ, तर्कों को एक स्ट्रिंग या एक संख्या होना चाहिए; यदि यह एक संख्या है, तो मूल्य को मेनू पथ से लिया गया मान बदल दिया जाएगा। यदि आप इस प्रतिस्थापन से बचना चाहते हैं, तो एक संख्या के बजाय आपको एक स्ट्रिंग का उपयोग करने की आवश्यकता है; उदाहरण के लिए, "1"
एक्सेस कॉलबैक में दिए गए तर्कों के लिए एक का उपयोग करने से स्वचालित प्रतिस्थापन से बचा जा सकता है।
ये Drupal कोर मॉड्यूल से उपयोग किए जाने वाले मेनू कॉलबैक घोषणाओं के कुछ उदाहरण हैं। (उदाहरण Drupal 7 कोड से हैं, लेकिन मैं जो इंगित करना चाहता हूं, उससे कोई फर्क नहीं पड़ता है।)
यह एक उदाहरण है जहां एक्सेस कॉलबैक 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,
);
यह एक उदाहरण है जहां एक्सेस कॉलबैक एक फ़ंक्शन नाम नहीं है।
$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',
);
इस मामले में, एक्सेस कॉलबैक user_view_access () है, जिसे पास किया गया है, नंबर 1 नहीं, बल्कि मेनू पथ से लिया गया मान (जो इस मामले में "उपयोगकर्ता /% उपयोगकर्ता" है); यह एक विशेष मामला है, क्योंकि फ़ंक्शन को इसके द्वारा लौटाया गया मान मिलेगा 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',
);
मान लीजिए कि पिछले मेनू को निम्न प्रकार से परिभाषित किया गया था, और "उपयोगकर्ता / हैलो" जैसे पथ से लागू किया गया था।
$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',
);
इस स्थिति में, एक्सेस कॉलबैक को तर्क से प्राप्त किया गया होगा जो पथ से लिया गया मान है (0 का अर्थ है "उपयोगकर्ता," और 1 का अर्थ है "उपयोगकर्ता" और स्लैश के बाद का भाग); इस मामले में, वह मूल्य "हैलो" है।
इन वाइल्डकार्ड तर्कों को बेहतर ढंग से समझने के लिए, वाइल्डकार्ड लोडर तर्क देखें । प्रलेखन पृष्ठ को Drupal 6 टैग किया गया है, लेकिन जो रिपोर्ट की गई है वह अभी भी Drupal 7 के लिए मान्य है।
एक्सेस कॉलबैक एक फ़ंक्शन है जो यह जांचता है कि क्या कुछ उपयोगकर्ता के पास कुछ अनुमतियां हैं। डिफ़ॉल्ट एक्सेस कॉलबैक user_access () है
एक्सेस तर्क उन अनुमतियों को सूचीबद्ध करते हैं जिनकी एक्सेस कॉलबैक द्वारा जांच की जाती है। जैसे "पहुंच सामग्री"
access callback
? यदि यह इसके अलावा कुछ और था user_access()
, तो क्या इसकी आवश्यकता को कम किया जा सकता है access arguments
?
access arguments
?