อะไรคือความแตกต่างระหว่างการขัดแย้งการเข้าถึงและการเรียกกลับ?
สมมติว่าฉันตั้งค่า callback access เป็น'user_access'
และarray('custom permission')
เป็นค่าสำหรับอาร์กิวเมนต์การเข้าถึง
นั่นหมายความว่าอย่างไร? พวกมันมีผลกระทบต่อกันอย่างไร?
อะไรคือความแตกต่างระหว่างการขัดแย้งการเข้าถึงและการเรียกกลับ?
สมมติว่าฉันตั้งค่า callback access เป็น'user_access'
และarray('custom permission')
เป็นค่าสำหรับอาร์กิวเมนต์การเข้าถึง
นั่นหมายความว่าอย่างไร? พวกมันมีผลกระทบต่อกันอย่างไร?
คำตอบ:
"Access callback" เป็นฟังก์ชั่นที่ถูกเรียกเพื่อตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าใช้เพจ ในกรณีพิเศษอาจเป็นค่าTRUE
และในกรณีนั้นผู้ใช้ทุกคนจะสามารถเข้าถึงได้ กล่าวอีกนัยหนึ่งการอนุญาตการเข้าถึงจะถูกข้าม
ในกรณีที่คุณใช้ชื่อฟังก์ชันสำหรับค่า "access callback" (โดยค่าเริ่มต้นคือ "user_access") จากนั้นคุณสามารถใช้ "access arguments" ซึ่งเป็นอาร์เรย์ที่มีอาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน callback 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',
);
ในกรณีนี้ callback access คือuser_view_access ()ซึ่งถูกส่งผ่านไม่ใช่หมายเลข 1 แต่เป็นค่าที่นำมาจากพา ธ เมนู (ซึ่งในกรณีนี้คือ "user /% user"); 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',
);
สมมติว่าเมนูก่อนหน้านี้มีการกำหนดดังต่อไปนี้และเรียกใช้ด้วยพา ธ เช่น "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',
);
ในกรณีนี้การเรียกกลับจะได้รับเป็นอาร์กิวเมนต์ค่าที่นำมาจากเส้นทาง (0 หมายถึง "ผู้ใช้" และ 1 หมายถึงส่วนหลัง "ผู้ใช้" และเครื่องหมายทับ); ในกรณีนี้ค่านั้นคือ "สวัสดี"
เพื่อทำความเข้าใจข้อโต้แย้งสัญลักษณ์แทนเหล่านี้ให้ดูอาร์กิวเมนต์ Wildcard พับ หน้าเอกสารถูกติดแท็ก Drupal 6 แต่สิ่งที่รายงานยังคงใช้ได้สำหรับ Drupal 7
การเรียกกลับเป็นฟังก์ชันที่ตรวจสอบว่าผู้ใช้บางคนมีสิทธิ์บางอย่าง การเรียกกลับที่เป็นค่าเริ่มต้นคือuser_access ()
อาร์กิวเมนต์การเข้าถึงแสดงรายการการอนุญาตที่ถูกตรวจสอบโดยการเรียกกลับ เช่น "การเข้าถึงเนื้อหา"
access callback
? หากเป็นสิ่งอื่นที่นอกเหนือไปจากuser_access()
นี้จะเป็นการขจัดความต้องการaccess arguments
หรือไม่
access arguments
อะไร