FormErrorIterator
class FormErrorIterator implements RecursiveIterator, SeekableIterator, ArrayAccess, Countable
Итерирует ошибки формы.
По желанию, этот класс поддерживает рекурсивную итерацию. Для рекурсивной итерации установите аргумент конструктора $deep в значение true. Теперь каждый элемент, возвращаемый итератором, является либо экземпляром {@link FormError}, либо экземпляром {@link FormErrorIterator}, в случае, если ошибки относятся к дочерней форме.
Вы также можете обернуть итератор в {@link \RecursiveIteratorIterator}, чтобы сплющить рекурсивную структуру в плоский список ошибок.
Постоянные значения
| INDENTATION | Префикс, используемый для отступа вложенных сообщений об ошибках. |
Методы
| __construct(FormInterface $form, array $errors) Создает новый итератор. | ||
| string | __toString() Возвращает все итерированные сообщения об ошибках в виде строки. | |
| FormInterface | getForm() Возвращает итерируемую форму. | |
| FormError|FormErrorIterator | current() Возвращает текущий элемент итератора. | |
| next() Перемещает итератор к следующей позиции. | ||
| int | key() Возвращает текущую позицию итератора. | |
| bool | valid() Возвращает, является ли текущая позиция итератора допустимой. | |
| rewind() Устанавливает позицию итератора в начало. | ||
| bool | offsetExists(int $position) Возвращает, существует ли позиция в итераторе. | |
| FormError|FormErrorIterator | offsetGet(int $position) Возвращает элемент по позиции в итераторе. | |
| offsetSet($position, $value) Метод не поддерживается. | ||
| offsetUnset($position) Метод не поддерживается. | ||
| bool | hasChildren() Возвращает, можно ли рекурсивно пройти по текущему элементу итератора. | |
| getChildren() Псевдоним метода {@link current()}. | ||
| int | count() Возвращает количество элементов в итераторе. Обратите внимание, что это не общее количество ошибок, если аргумент конструктора $deep был установлен в значение true! В этом случае вы должны обернуть итератор в {@link \RecursiveIteratorIterator} со стандартным режимом {@link \RecursiveIteratorIterator::LEAVES_ONLY} и подсчитать результат. В качестве альтернативы установите аргумент конструктора $flatten тоже в значение true. | |
| seek(int $position) Устанавливает позицию итератора. | ||
| FormErrorIterator | findByCodes(string|string[] $codes) Создает итератор для ошибок со специфическими кодами. |
Подробное описание
__construct(FormInterface $form, array $errors)
Создает новый итератор.
Параметры
| FormInterface | $form | Форма с ошибками |
| array | $errors | Ошибки формы |
Исключения
| InvalidArgumentException | Если ошибки некорректны |
string __toString()
Возвращает все итерированные сообщения об ошибках в виде строки.
Значение, возвращаемое функцией
| string | Итерированные сообщения об ошибках |
FormInterface getForm()
Возвращает итерируемую форму.
Значение, возвращаемое функцией
| FormInterface | Форма, ошибки которой итерируются этим объектом |
FormError|FormErrorIterator current()
Возвращает текущий элемент итератора.
Значение, возвращаемое функцией
| FormError|FormErrorIterator | ошибка или итератор, содержащий вложенные ошибки |
next()
Перемещает итератор к следующей позиции.
int key()
Возвращает текущую позицию итератора.
Значение, возвращаемое функцией
| int | Позиция с индексом 0 |
bool valid()
Возвращает, является ли текущая позиция итератора допустимой.
Значение, возвращаемое функцией
| bool | Является ли итератор допустимым |
rewind()
Устанавливает позицию итератора в начало.
Этот метод обнаруживает, если ошибки были добавлены в форму после создания итератора.
bool offsetExists(int $position)
Возвращает, существует ли позиция в итераторе.
Параметры
| int | $position | Позиция |
Значение, возвращаемое функцией
| bool | Существует ли данная позиция |
FormError|FormErrorIterator offsetGet(int $position)
Возвращает элемент по позиции в итераторе.
Параметры
| int | $position | Позиция |
Значение, возвращаемое функцией
| FormError|FormErrorIterator | Элемент по заданной позиции |
Исключения
| OutOfBoundsException | Если заданная позиция не существует |
offsetSet($position, $value)
Метод не поддерживается.
Параметры
| $position | ||
| $value |
Исключения
| BadMethodCallException |
offsetUnset($position)
Метод не поддерживается.
Параметры
| $position |
Исключения
| BadMethodCallException |
bool hasChildren()
Возвращает, можно ли рекурсивно пройти по текущему элементу итератора.
Значение, возвращаемое функцией
| bool | Является ли текущий элемент экземпляром этого класса |
getChildren()
Псевдоним метода {@link current()}.
int count()
Возвращает количество элементов в итераторе.
Обратите внимание, что это не общее количество ошибок, если аргумент конструктора $deep был установлен в значение true! В этом случае вы должны обернуть итератор в {@link \RecursiveIteratorIterator} со стандартным режимом {@link \RecursiveIteratorIterator::LEAVES_ONLY} и подсчитать результат.
$iterator = new \RecursiveIteratorIterator($form->getErrors(true));
$count = count(iterator_to_array($iterator));
В качестве альтернативы установите аргумент конструктора $flatten тоже в значение true.
$count = count($form->getErrors(true, true));
Значение, возвращаемое функцией
| int | Количество итерированных элементов |
seek(int $position)
Устанавливает позицию итератора.
Параметры
| int | $position | Новая позиция |
Исключения
| OutOfBoundsException | Если позиция некорректна |
FormErrorIterator findByCodes(string|string[] $codes)
Создает итератор для ошибок со специфическими кодами.
Параметры
| string|string[] | $codes | Коды для поиска |
Значение, возвращаемое функцией
| FormErrorIterator | новый экземпляр, который содержит только специфические ошибки |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/3.3/Symfony/Component/Form/FormErrorIterator.html