Возникла задача, аналогичная описанной тут .
Пусть имеется веб-форма, содержащая всего один вопрос но с множеством полей ввода:
Вопрос формы
Ответ1 [ Поле_ввода_1 ]
Ответ2 [ Поле_ввода_2 ]
Ответ3 [ Поле_ввода_3 ]
Ответ4 [ Поле_ввода_4 ]
Ответом на вопрос является вектор чисел от 0 до 10, дающих в сумме ровно 10.
Необходимо: указанным выше способом кастомизировать вывод компонента веб-формы, устроить валидацию.
Очевидно, что вариант нескольких вопросов в одной форме здесь не работает, поэтому был создан один объект "вопрос" с нужным количеством "ответов".
Стандартный компонент вывода "поле ответа" использовал стандартную функцию <?=$FORM->ShowInput('MYFIELD_5')?>,выводящий поля ответа в форме
мда...
Решением оказался следующий кусок кода, вставляемый в пользовательский шаблон веб-формы
все вобщем-то давно документировано, но ректальности выполнения очевидной вобщем-то вещи это не убавляет.
Надеюсь, пригодится.
Пусть имеется веб-форма, содержащая всего один вопрос но с множеством полей ввода:
Вопрос формы
Ответ1 [ Поле_ввода_1 ]
Ответ2 [ Поле_ввода_2 ]
Ответ3 [ Поле_ввода_3 ]
Ответ4 [ Поле_ввода_4 ]
Ответом на вопрос является вектор чисел от 0 до 10, дающих в сумме ровно 10.
Необходимо: указанным выше способом кастомизировать вывод компонента веб-формы, устроить валидацию.
Очевидно, что вариант нескольких вопросов в одной форме здесь не работает, поэтому был создан один объект "вопрос" с нужным количеством "ответов".
Стандартный компонент вывода "поле ответа" использовал стандартную функцию <?=$FORM->ShowInput('MYFIELD_5')?>,выводящий поля ответа в форме
<span>вопрос</span><br /> <input type="text" ... /> |
мда...
Решением оказался следующий кусок кода, вставляемый в пользовательский шаблон веб-формы
<? $QUESTION_ID = 1; // ID вопроса $arFilter = Array( "FIELD_TYPE" => "text");// сформируем массив фильтра // получим список всех ответов вопроса #1 $rsAnswers = CFormAnswer::GetList( $QUESTION_ID, $by="s_sort", $order="asc", $arFilter, $is_filtered ); echo "<table>"; while ($arAnswer = $rsAnswers->Fetch()) { echo "<tr>"; echo "<td>".$arAnswer["MESSAGE"]."</td>"; echo "<td> <input type=\"text\" class=\"inputtext\" value=\"\" size=\"1\" name=\"form_text_".$arAnswer["ID"]."\" /> </td>"; echo "</tr>"; } echo "</table>"; ?> |
все вобщем-то давно документировано, но ректальности выполнения очевидной вобщем-то вещи это не убавляет.
Надеюсь, пригодится.