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