Проблема с HTML_QuickForm, groupRule

virakochi

Устал
Проблема с HTML_QuickForm, groupRule

Работаю с группами.. Пытаюсь назначить правила для них.
Проблема в том, что если возникает ошибка по одному из правил, то ошибки по следующим не отобрадаются.
Пример кода:
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;
                }
lines 1451-1455.
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" можно же итак обрабатывать общим групповым правилом...

Все еще ищу решение.. Потому как на исходники править не хотелось бы..
 

Frol

Новичок
1. ты не правильно используешь группу.
2. группа -- это отдельный элемент. каждый элемент может иметь только одну ошибку.
 

virakochi

Устал
Окей. То есть в моем случае группу некорректно использовать..
Получается идеологически некорректно требовать от группы показа ошибок дочерних элементов...
Ок.. буду разбивать все на части..

Хотя, получается такое же идеологическое разногласие:
Ошибки отдельным элементам группы назначать можно, а одновременно все их проверить нельзя..

-~{}~ 15.02.05 19:42:

Группы выбрал для того, чтобы одинаковые списки элементов обрабатывать одинаково.. А списки довольно длинные..

Возможно еть другое общее решение?
 

Frol

Новичок
ты понимаешь слово "группа"?
нет.
есть смысл что-то говорить?
нет.
 

virakochi

Устал
Скорее всего понимаю, но иначе чем ты.. Спорить не хочу..
Хочу найти оптимальное решение для своей задачи:
Есть 3 одинаковых списка разнотипных элементов.
Нужно: обработать все ошибки, в случае если ошибок нет - обработать данные.
 
Сверху