Я расширил Zend_Form своим собственным классом и позволил унаследовать все мои формы от этого.Мой базовый класс применяет фильтр по умолчанию ко всем элементам формы, который удаляет двойные пробелы, в основном:
return trim(preg_replace('/\s+/', ' ', $value));
Хотя обычно я хочу это для каждого элемента, бывают случаи, когда он разбивает вещи, например, наtextareas (переводы строки также удаляются), поэтому я ищу способ отключить фильтр по умолчанию для определенных элементов.Я попытался это (безуспешно):
$element->clearFilters();
однако в методе init () форм этот фильтр еще не установлен ($ element-> getFilters () возвращает пустой массив), только при вызове таких методов, как __toString() или isValid () он применяется, но я бы предпочел не перезаписывать эти методы только для того, чтобы избавиться от фильтра.Должен быть лучший способ?!
Самым чистым решением, вероятно, было бы включить этот фильтр и не применять его по умолчанию - но я бы предпочел оставить его по умолчанию и найти способ исключить определенные элементы.