ertttert
access callback
элемента меню значение TRUE, а это означает, что к данному элементу может обратиться любой пользователь. Обычно управление доступом к меню осуществляется за счет определения прав доступа в модуле с помощью функции hook_permission()
и последующей проверки этих прав. Имя необходимой для этого функции определено в ключе access callback
и обычно выглядит как user_access
. Определим право доступа с именем receive greeting; если у пользователя нет роли с этим правом, то при попытке перехода по адресу http://example.com/?q=menufun
он получит сообщение Access denied
(Доступ запрещен).
В этом коде право доступа определяется с помощью вызова/** * Реализация hook_permission() */ function menufun_permission() {return array( 'receive greeting' =>array( 'title' =>t( 'Receive a greeting') ,'description' =>t( 'Allow users receive a greeting message') ,) ,) ; }/** * Реализация hook_menu(). */ function menufun_menu() { $items['menufun'] =array( 'title' => 'Menu Fun','page callback' => 'menufun_greeting','file' => 'menufun_greeting.inc','page arguments' => array('Jane', 'Doe'),'access callback' => 'user_access','access arguments' =>array( 'receive greeting') ,'type' => MENU_NORMAL_ITEM,'weight' => '-1',) ; $items['menufun/farewell'] =array( 'title' => 'Farewell','page callback' => 'menufun_farewell','file' => 'menufun_greeting.inc','access callback' => 'user_access','access arguments' =>array( 'receive greeting') ,'type' => MENU_NORMAL_ITEM, ) ;return $items; }
user_access('receive greeting')
. Здесь система меню работает в качестве стража, определяя на основе пользовательской роли, к каким путям разрешено обращаться, а к каким нет.
user_access
. Исключе нием является любой элемент меню типа MENU_DEFAULT_LOCAL_TASK, который наследует родительские ключи access callback
и access arguments
, хотя для ясности лучше явно определять и эти ключи даже для стандартных локальных задач.
Всего комментариев: 0 | |