stones.gif (8081 байт)

Более сложные вызывающие последовательности

Мы закончим наш рассказ о компонентах форм созданием одного очень полезного компонента, который позволяет пользователю выбирать любое число элементов этого компонента. Функция scrolling_list() модуля CGI.pm может принимать произвольное число пар аргументов, каждая из которых состоит из именованного параметра (начинающегося со знака - ) и значения этого параметра.

Чтобы ввести в форму прокручиваемый список, нужно сделать следующее:

print scrolling_list(
   -NAME => "flavors",
   -VALUES => [ qw(vanilla chocolate cherry) ],
   -LABELS => (
      vanilla => "Великолепный пломбир",
      cherry => "Вишневое-вишневое"
      chocolate => "Нежный шоколад",
   },
   -SIZE =>3,
   -MULTIPLE => 1   #1 - если да, 0 - если нет
);

Значения параметров имеют следующий смысл:

-NAME

Имя компонента формы. Значение этого параметра можно использовать позже для выборки пользовательских данных из формы с помощью функции param() .
-LABELS
Ссылка на анонимный хеш. Значения хеша — это метки (элементы списка), которые видит пользователь формы. Когда пользователь выбирает ту или иную метку, в CGI-программу возвращается соответствующий ключ хеша. Например, если пользователь выбирает элемент, заданный как Вишневое-вишневое , CGI-программа получает аргумент cherry .
-VALUES
Ссылка на анонимный массив. Этот массив состоит из ключей хеша, на которые ссылается -LABELS .
-SIZE
Число, определяющее, сколько элементов списка пользователь будет видеть одновременно.
-MULTIPLE
Истинное или ложное значение (в том смысле, который принят для этих понятий в Perl), показывающее, можно ли будет пользователю формы , выбирать более одного элемента списка.
Если -MULTIPLE установлена в значение истина , Вы можете присвоить список, возвращаемый функцией param() , массиву:

@choices = param("flavors");

Вот другой способ создания этого прокручиваемого списка — с передачей ссылки на существующий хеш вместо создания такого хеша "на ходу": :

%flavors = (
   "vanilla", "Великолепный пломбир",
   "cherry", "Вишневое-вишневое",
   "chocolate", "Нежный шоколад",
);
print scrolling_list(
   -NAME => "flavors",
   -LABELS => \%flavors,
   -VALUES => [ keys %flavors ],
   -SIZE => 3,
   -MULTIPLE => 1   #1 если да , 0 если нет
);

На этот раз мы передаем в функцию значения, вычисленные по ключам хеша %flavors , ссылка на который выполняется с помощью операции \ . Обратите внимание: параметр -VALUES здесь тоже взят в квадратные скобки. Простая передача результата операции keys в виде списка не сработает, потому что в соответствии с правилом вызова функции scrolling_list() должна быть сделана ссылка на массив, которую как раз и создают квадратные скобки. Считайте квадратные скобки удобным способом представления нескольких значений как одного.

<< Предыдущая страница Содержание Наверх Следующая страница >>

stones.gif (8081 байт)
2000, "Язык Perl. Создание CGI-скриптов на Perl." . Использованы материалы книг: Маслов В.В. Основы программирования на языке Perl - М.: Радио и связь, Горячая линия - Телеком. 1999. - 144 c.: - ISBN 5-256-01356-4; Рэндал Шварц, Том Кристиансен Изучаем Perl : Пер. с англ. - К.: Издательская группа BHV, 1998 - 320 c.: - ISBN 5-7315-0031-2.
Все пожелания - авторам: Алексею Машьянову , Александру Яковлеву .