एक्सेस तर्क और एक्सेस कॉलबैक में क्या अंतर है?


21

एक्सेस तर्क और एक्सेस कॉलबैक में क्या अंतर है?

मान लीजिए कि मैंने एक्सेस कॉलबैक सेट किया है 'user_access', और array('custom permission')एक्सेस तर्कों के लिए मूल्य है।

इसका क्या मतलब है? वे एक दूसरे को कैसे प्रभावित करते हैं?

जवाबों:


27

"एक्सेस कॉलबैक" वह फ़ंक्शन है जिसे उपयोगकर्ता को पृष्ठ तक पहुंच सत्यापित करने के लिए कहा जाता है। विशेष मामले के रूप में, इसका मूल्य हो सकता है 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 के लिए मान्य है।


जबरदस्त व्याख्या। मेरी आवश्यकता में कुछ कस्टम बटन का कहना है कि "वोट नाउ" को केवल प्रमाणित उपयोगकर्ता द्वारा संसाधित किया जाना चाहिए लेकिन बटन को अनाम को भी दिखाया जाना चाहिए और जब अनाम उपयोगकर्ता क्लिक करता है कि उसे लॉगिन पृष्ठ पर रीडायरेक्ट करना चाहिए और प्रक्रिया जारी है। इस विशेष परिदृश्य के लिए अनाम को बटन दिखाने के लिए विशेष पहुंच की स्थिति है? यहाँ टिप्पणी करना क्योंकि यह इस पोस्ट को और अधिक पूर्ण विकि बना देगा। बुकमार्क किया गया .. :)
किर्किंजिंग

4

एक्सेस कॉलबैक एक फ़ंक्शन है जो यह जांचता है कि क्या कुछ उपयोगकर्ता के पास कुछ अनुमतियां हैं। डिफ़ॉल्ट एक्सेस कॉलबैक user_access () है

एक्सेस तर्क उन अनुमतियों को सूचीबद्ध करते हैं जिनकी एक्सेस कॉलबैक द्वारा जांच की जाती है। जैसे "पहुंच सामग्री"


और क्या मूल्य हो सकता है access callback? यदि यह इसके अलावा कुछ और था user_access(), तो क्या इसकी आवश्यकता को कम किया जा सकता है access arguments?
user1359

2
जो तुम्हे चाहिये। कोई भी फ़ंक्शन जो TRUE या FALSE लौटाता है।
बर्दिर

तो फिर आप की जरूरत नहीं होगी access arguments?
user1359

हां फिर आप इसे छोड़ सकते हैं
शोएब नवाज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.