QuickForm - один Required на два поля

sverel

Новичок
QuickForm - один Required на два поля

Задача: сделать форму обратной связи в которой есть два поля mail + phone. Ни одно из них не является обязательным, но пользователь должен заполнить хотя бы одно из них.

Повесить rule-required на каждое из этих полей я не могу т.к. они станут обязательными. Поэтому я вешаю на телефон rule-callback и в своей ф-ции я проверяю, что бы хотя бы одно из полей было заполнено. Однако (из документации):
On empty elements validation
If the element is empty, no validation rules other than required are checked for it. This means that empty element can be invalid only when it is required.
Т.е. если пользователь не заполнил телефон, то мой каллБэк даже не вызывается и форма успешно проходит валидацию.

Как быть? Может есть идеи или я где-то не дочитал документацию?

P.S.> есть маза повесить callback на поле ФИО которое является required-ом, но тогда сообщение будет выводится не там где надо.
Ещё один вариант в условии дописать:

PHP:
<?php
if ($form->validate()  && myCallbackValidation()) {
   ...
}
?>
Но это не совсем корректно т.к. для правил предусмотрено спец АПИ, а тут такой костыль. К тому же теряется гибкость. Не буду вдаваться в подробности, но смысл в том, что это должен быть кастомизабельный модуль "формы обратной связи" и все правила должны накладываться на саму форму, ведь в будущем потребуется сделать форму без этих полей.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Что за идиотская привычка сначала открывать Feature request, а потом уже спрашивать "может я не дочитал документацию"?..

В HTML_QuickForm это решается через addFormRule(), в HTML_QuickForm2 всё вообще элементарно:
PHP:
$mail->addRule('nonempty', 'Укажите либо мыло, либо телефон')
     ->or_($phone->createRule('nonempty'));
 
Сверху