Sự khác biệt giữa các đối số truy cập và gọi lại truy cập là gì?
Giả sử tôi đặt cuộc gọi lại truy cập thành 'user_access'
và array('custom permission')
là giá trị cho các đối số truy cập.
Điều đó nghĩa là gì? Làm thế nào để họ ảnh hưởng lẫn nhau?
Sự khác biệt giữa các đối số truy cập và gọi lại truy cập là gì?
Giả sử tôi đặt cuộc gọi lại truy cập thành 'user_access'
và array('custom permission')
là giá trị cho các đối số truy cập.
Điều đó nghĩa là gì? Làm thế nào để họ ảnh hưởng lẫn nhau?
Câu trả lời:
"Truy cập gọi lại" là chức năng được gọi để xác minh người dùng có quyền truy cập vào trang. Trong trường hợp đặc biệt, nó có thể là giá trị TRUE
và trong trường hợp đó, tất cả người dùng sẽ có quyền truy cập vào nó; nói cách khác, quyền truy cập sẽ bị bỏ qua.
Trong trường hợp bạn đang sử dụng tên hàm cho giá trị "truy cập gọi lại" (theo mặc định, đó là "user_access"), thì bạn cũng có thể sử dụng "đối số truy cập", là một mảng chứa các đối số được truyền cho hàm gọi lại truy cập.
Cũng như các cuộc gọi lại menu khác, các đối số phải là một chuỗi hoặc một số; trong trường hợp đó là một số, giá trị sẽ được thay thế bằng giá trị được lấy từ đường dẫn menu. Nếu bạn muốn tránh sự thay thế này, thay vì một số bạn cần sử dụng một chuỗi; ví dụ: sử dụng "1"
làm một cho các đối số được truyền cho cuộc gọi lại truy cập sẽ tránh được việc thay thế tự động.
Đây là một số ví dụ về khai báo gọi lại menu được sử dụng từ các mô-đun lõi Drupal. (Các ví dụ được lấy từ mã Drupal 7, nhưng với những gì tôi muốn chỉ ra, điều đó không tạo ra sự khác biệt nào.)
Đây là một ví dụ trong đó cuộc gọi lại truy cập là 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,
);
Đây là một ví dụ trong đó gọi lại truy cập không phải là một tên hàm.
$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',
);
Trong trường hợp này, cuộc gọi lại truy cập là user_view_access () được truyền, không phải là số 1, mà là một giá trị được lấy từ đường dẫn menu (trong trường hợp này là "user /% user"); đây là một trường hợp cụ thể, vì hàm sẽ nhận được giá trị trả về 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',
);
Giả sử menu trước được định nghĩa như sau và được gọi bằng một đường dẫn như "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',
);
Trong trường hợp này, cuộc gọi lại truy cập sẽ nhận được dưới dạng đối số giá trị được lấy từ đường dẫn (0 có nghĩa là "người dùng" và 1 có nghĩa là phần sau "người dùng" và dấu gạch chéo); trong trường hợp này, giá trị đó là "xin chào."
Để hiểu rõ hơn về các đối số ký tự đại diện này, hãy xem Đối số trình tải ký tự đại diện . Trang tài liệu được gắn thẻ Drupal 6, nhưng những gì được báo cáo vẫn còn hiệu lực đối với Drupal 7.
Truy cập gọi lại là một chức năng kiểm tra nếu một số người dùng có một số quyền. Cuộc gọi lại truy cập mặc định là user_access ()
Đối số truy cập liệt kê quyền được kiểm tra bằng cách gọi lại truy cập. ví dụ: "nội dung truy cập"
access callback
? Nếu đó là một cái gì đó khác hơn user_access()
, điều đó sẽ làm giảm nhu cầu access arguments
?
access arguments
?