ertttert
Books-CMS.clan.su

Аргументы обратного вызова страницы

Иногда функции обратного вызова страницы, которая отображена на путь, требуется предоставить больше информации. Прежде всего, все дополнительные части пути передаются автоматически. Изменим нашу функцию следующим образом:

function menufun_hello($first_name = '', $last_name = '') {
 return t('Hello @first_name @last_name',
 array('@first_name' => $first_name, '@last_name' => $last_name));
}

Если теперь перейти по адресу http://example.com/?q=menufun/John/Doe, то мы увидим на экране то, что показано на рис. 4.4.

Обратите внимание, что каждый дополнительный компонент URL передан в виде параметра функции обратного вызова. В хуке меню можно также определить аргументы обратного вызова страницы, добавив в массив $items дополнительный ключ аргументов страницы (page arguments). Определение аргумента страницы удобно тем, что позволяет получить больший контроль над параметрами, передаваемыми функции обратного вызова. В качестве примера модифицируем модуль menufun, добавив в него аргументы страницы для нашего элемента меню:

function menufun_menu() {
 $items['menufun'] = array(
 'title' => 'Greeting',
 'page callback' => 'menufun_hello',
 'page arguments' => array('Jane', 'Doe'),
 'access callback' => TRUE,
 'type' => MENU_CALLBACK,
 );
return $items;
}

После того как Drupal выполнит все инструкции, которые явно заданы в качестве аргументов страницы, в функцию обратного вызова страницы передаются все оставшиеся аргументы страницы в виде дополнительных параметров — с помощью средства перегрузки параметров для функций в PHP. Аргументы из URL все так же видны; для обращения к ним нужно изменить сигнатуру функции обратного вызова — добавить параметры из URL. Поэтому для нашего переделанного элемента меню будет актуальна следующая сигнатура функции, где $first_name содержит значение Jane (из первого элемента массива page arguments), а $last_name — значение Doe (из второго элемента массива page arguments):

function menufun_hello($first_name = '', $last_name = '') {...}
Проверим поведение элемента меню: поместим Jane Doe в аргументы меню, а John Doe — в URL-адрес, и посмотрим, что получится. Теперь переход по адресу http://example.com/?q=menufun/John/Doe даст результаты, показанные на рис. 4.5 (если у вас это не получилось, значит, вы забыли перестроить меню).
drupal
Чтобы использовать переданные значения в URL, можно изменить функцию обратного вызова следующим образом:
function menufun_hello($first_name = '', $last_name = '') {
 return t('Hello @first_name @last_name from @from_first_name @from_last_name',
Привет от array('@first_name' => $first_name, '@last_name' => $last_name));
}
Обновите свою версию, очистите кэш и посмотрите, что получится при переходе по адресу http://example.com/?q=menufun.
Всего комментариев: 0
Имя *:
Email *:
Код *:


Бесплатный конструктор сайтов - uCoz