virakochi
Устал
Проблема с HTML_QuickForm, groupRule
Работаю с группами.. Пытаюсь назначить правила для них.
Проблема в том, что если возникает ошибка по одному из правил, то ошибки по следующим не отобрадаются.
Пример кода:
Нужно, чтобы возникали ошибки по всем элементам. Спасибо.
-~{}~ 15.02.05 19:04:
Нашел причину..
QuickForm.php, lines 1429-1432
lines 1451-1455.
То есть предусмотрено, что если в группе возникла хотя бы одна ошибка, то больше мы их туда не пихаем.. Имхо неправильно..
По-моему вернее было бы оставить во втором блоке только
Хотя может я не до конца все тут понял..
Ведь в группу можно пихать не только однотипные элементы. А ошибки типа "2 из 5" можно же итак обрабатывать общим групповым правилом...
Все еще ищу решение.. Потому как на исходники править не хотелось бы..
Работаю с группами.. Пытаюсь назначить правила для них.
Проблема в том, что если возникает ошибка по одному из правил, то ошибки по следующим не отобрадаются.
Пример кода:
PHP:
$group = array();
$group[] = HTML_QuickForm :: createElement('text', 'size', 'Size (pt)');
$group[] = HTML_QuickForm :: createElement('text', 'maxlength', 'Max length');
$group[] = HTML_QuickForm :: createElement('text', 'x_offset', 'X coordinate');
// Title parameters block
$form->addGroup($group, 'title');
// -------------------------
$group_rule = array(
'size' => array(
array('Enter title size', 'required'),
array('Enter numeric title size', 'numeric')
),
'maxlength' => array(
array('Enter title max length', 'required'),
array('Enter numeric title max length', 'numeric')
),
'x_offset' => array(
array('Enter title X coordinate', 'required'),
array('Enter numeric title X coordinate', 'numeric')
),
);
$form->addGroupRule('title', $group_rule);
-~{}~ 15.02.05 19:04:
Нашел причину..
QuickForm.php, lines 1429-1432
PHP:
if ((isset($rule['group']) && isset($this->_errors[$rule['group']])) ||
isset($this->_errors[$target])) {
continue 2;
}
PHP:
if (isset($rule['group'])) {
$this->_errors[$rule['group']] = $rule['message'];
} else {
$this->_errors[$target] = $rule['message'];
}
По-моему вернее было бы оставить во втором блоке только
PHP:
$this->_errors[$target] = $rule['message'];
Ведь в группу можно пихать не только однотипные элементы. А ошибки типа "2 из 5" можно же итак обрабатывать общим групповым правилом...
Все еще ищу решение.. Потому как на исходники править не хотелось бы..