Я использую Template Toolkit и perl для создания веб-страницы. У меня есть массив с идентификационными номерами в нем, который включает и выключает флажки, если это значение существует в массиве. Мне было интересно, есть ли более эффективный способ установки группы флажков вкл и выкл на загрузку страницы. Существует некоторый предыдущий код, и он чувствует себя вялым, чтобы загрузить, прежде чем я его получил. Я не хочу больше добавлять время ожидания.Использование Template Toolkit для установки флажка без использования нескольких циклов
Это работает:
<label for="checkFedGround">
<input type="checkbox" name="Shipping" id="checkFedGround" value="11"
[% FOREACH ShippingID IN data.ShippingID %]
[% IF ShippingID == 11 %] checked="checked"
[% END %]
[% END %]
enabled />
FedEx Ground
</label>
Проблема с этим она должна была бы сделать петлю FOREACH для каждого из моих типов доставки. Кажется, что было бы много ненужной обработки. Итак, допустим, в массиве 30 флажков и 10 идентификаторов. Это означает, что FOREACH будет проходить через 10 раз для каждого флажка только для проверки одного идентификатора.
Я пытался использовать Template Toolkit :: EXIST и подобные методы, чтобы проверить, находится ли идентификатор в массиве один раз, но он не работает так, как я этого хочу.
Это НЕ работает: это галочка для значений, которые не входят в объем.
<input type="checkbox" name="Shipping" id="checkFedGround" value="11"
[% IF (data.ShippingID(11)) %] checked="checked"
[% END %]
enabled />
FedEx Ground
Кто-нибудь знает лучший способ сделать это?
ОБНОВЛЕНИЕ/РЕШЕНИЕ: Спасибо за совет. Как я уже сказал, в итоге я использовал хэш для хранения данных. Я также отказался от использования статических флажков в пользу списка выбора, который создает отсортированный список. JQuery считывает значение выделенных строк/checkbox, обрабатывает хэш-массив и передает его на Perl.
<table> ...
<td> <input type="checkbox" name="ShippingID" value="[% service.ShippingID %]"
[% IF service.default %] checked="checked" [% END %]
style="margin: 0px;" />
</td> </table>
....
<select id="ShippingMethodSelect">
<option value="">Add Shipping Method...</option>
[% FOREACH service IN data.Shipping %]
<option value="[% service.ShippingID %]">[% service.description %]</option>
[% END %]
</select>
(Не уверен в синтаксисе, так как это число. Вы, возможно, придется использовать несколько иной код шаблона, но идея имеет.) – ikegami
Я закончил с использованием хэш, как предложено. Также убрали идею статических флажков в пользу списка выбора, который создал отсортированный список флажков. – Vongrats