Drupal - как зарегистрировать MENU_CALLBACK, который доступен для всех пользователей (даже анонимных)? - PullRequest
2 голосов
/ 29 апреля 2010

Я пытаюсь выучить Drupal 6. Я хочу зарегистрировать путь '/ topic' в MENU_CALLBACK с помощью hook_menu (). Вот что у меня есть:

function mymodule_menu() {
   $items = array()
   $items['foo'] = array( 
       'page callback' => 'show_page_foo',
       'access callback'   => 'user_access',
       'access arguments' => array('access foo content'),
       'type'     => MENU_CALLBACK 
     );
}
function show_page_foo() {
   //show foo page
}

Это нормально работает для вошедшего в систему пользователя. Но когда я захожу на путь как анонимный пользователь, он показывает сообщение «Отказано в доступе». Какими должны быть значения «access callback» и «access arguments», чтобы это было доступно всем посетителям?

Я помню, что сделал эту работу, просто сказав 'access' => TRUE в Drupal 5. Больше не работает в Drupal 6.

Ответы [ 2 ]

5 голосов
/ 29 апреля 2010

Вы можете использовать разрешение, как вы показываете, и давать разрешение анонимным пользователям.

Вы также можете сделать

'access callback' => TRUE
1 голос
/ 02 сентября 2012

'access callback' должна быть функцией, возвращающей логическое значение, и 'access callback' => TRUE будет работать нормально. В любом случае, я бы посоветовал вам не использовать постоянное значение для более чистого контроля доступа. Используйте

'access callback' => 'user_access',
'access arguments' => array('access content'),

вместо этого это достаточно общее разрешение. Или попробуйте разрешение, которое лучше соответствует вашим потребностям. Вы можете пропустить сам обратный вызов доступа, так как user_access используется как значение по умолчанию.

...