액세스 인수와 액세스 콜백의 차이점은 무엇입니까? array(‘custom permission’)액세스 인수의 값입니다. 그게 무슨 뜻이야? 그들은

액세스 인수와 액세스 콜백의 차이점은 무엇입니까?

나는에 대한 액세스 콜백을 설정한다고 가정 'user_access'하고, array('custom permission')액세스 인수의 값입니다.

그게 무슨 뜻이야? 그들은 서로에게 어떤 영향을 미칩니 까?



답변

“액세스 콜백”은 사용자가 페이지에 액세스 할 수 있는지 확인하기 위해 호출되는 기능입니다. 특별한 경우에는 값이 될 수 있으며, TRUE이 경우 모든 사용자가 액세스 할 수 있습니다. 즉, 액세스 권한이 무시됩니다.

“access callback”값에 함수 이름을 사용하는 경우 (기본적으로 “user_access”) “access arguments”를 사용할 수도 있습니다.이 액세스 인수는 액세스 콜백 함수에 전달 된 인수를 포함하는 배열입니다.
다른 메뉴 콜백과 마찬가지로 인수는 문자열 또는 숫자 여야합니다. 숫자 인 경우 값은 메뉴 경로에서 가져온 값으로 대체됩니다. 이 대체를 피하려면 숫자 대신 문자열을 사용해야합니다. 예를 들어, "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 () 로 전달 되며 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은 “사용자”와 슬래시 뒤의 부분을 의미 함). 이 경우 해당 값은 “hello”입니다.

이러한 와일드 카드 인수를 더 잘 이해하려면 와일드 카드 로더 인수를 참조하십시오 . 설명서 페이지에 Drupal 6 태그가 붙어 있지만보고 된 내용은 여전히 ​​Drupal 7에 유효합니다.


답변

액세스 콜백은 일부 사용자에게 권한이 있는지 확인하는 기능입니다. 기본 액세스 콜백은 user_access ()입니다.

액세스 인수는 액세스 콜백으로 검사되는 권한을 나열합니다. 예 : “액세스 내용”