Итак, что мы имеем:
Форма по адресу
216.73.98.18/contact_us.html
Вызов сниппета происходит так:
[!fillSelectOptions!] //вопрос, кстати, почему в закэшированном виде не работает, вызывая ошибку парсера модх...
[!eForm? &language=`english` &formid=`ContactForm` &subject=`Feedback` &to=`[email protected]` &vericode=`0` &tpl=`ContactForm` &report=`ContactFormReport` &thankyou=`ContactFormThanks` &debug=`1` &eFormOnBeforeFormParse=`fillSelectOptions` !]
В сниппете fillSelectOptions хранится вот это:
<?php
function fillSelectOptions(&$fields, &$templates){
$options = '<option value="value1[+products:value1+]">1</option><option value="value2[+products:value2+]">2</option><option value="value3[+products:value3+]">3</option>';
$templates['tpl'] = str_replace('[+options+]',$options,$templates['tpl']);
return true;
}
?>
В чанке ContactForm хранится форма:
<p class="error">[+validationmessage+]</p>
<form method="post" action="[~[*id*]~]" id="EmailForm" name="EmailForm">
<fieldset>
<h3> Contact Us</h3>
<input name="formid" type="hidden" value="ContactForm" />
...
<label for="cfProducts">Products You Are Interested In:
<p><select name="products" id="cfProducts" multiple="multiple" size="10" eform="Products You Are Interested In:listbox:1:">[+options+]</select></p></label>
...
<label> </label><p><input type="submit" name="contact" id="cfContact" class="button" value="Send" /></p>
</fieldset>
</form>
Проблема в том, что если в списке выбрать например 1 и 3, то будут только последнее значение (3).
Скажу, что последнее сообщение тут мне не помогло:
http://modxcms.com/forums/index.php/topic,13091.0.html
А если делать как обычно, то валидацию проходит, но всё равно тоже только последнее значение...
Какие идеи?.. Заказчику надо, чтобы на форме выбирался список продуктов из общего списка... Как иначе сделать не знаю...
P.S. Если упростить форму (вместо [+options+] вбить напрямую в чанк формы значения и убрать сниппет), то проблема остаётся, то есть проблема не в том, что содержимое генерируется динамически...