Re: Zend_Form, QuickForm2, etc
Автор оригинала: MildMildMint
Плюсы:
1) Одна сущность
2) Более удобное отображение надписей валидаторов около элементов.
Минусы:
1) Кода не меньше по объему
2) Валидаторы в контрроллере не сложнее использовать, чем валидаторы элементов формы.
3) Не гибкое отображение.
4) Баги библиотек
5) Приходится выполнять работу верстальщика, кастомизируя внешний вид.
Сами смотрите:
http://framework.zend.com/manual/ru/zend.form.quickstart.html
Количество минусов больше, чем плюсов. Обоснуйте положительный опыт использования подобных библиотек.
У меня не получалось получить с них пользу, только одни неприятности(время на чтение документации, время на борьбу со внутренностями библиотек, время на переписывание)
Думаю в этом вопросе решений не так много: либо делать каждый раз руками уникальные по функциональности и дизайну формы, либо использовать какой то генератор форм, покрывающий большинство потребностей, в это случае снова вилка: либо писать свой с нуля с блекджэком и т.д., либо использовать наиболее подходящий с доработками.
Я пошел именно этим путем и не жалею об этом (чуть-чуть доработал QuickForm2 для своих нужд).
А кода, кстати, в разы меньше, если потратить немного времени на создание типовых элементов, что в Zend_Form, что в QF(x.x).
Пример с использованием нестандартных виджетов типа DateTimePicker:
http://jquickform.ru/?page=dt_datepicker
PHP:
$form = new jQuickForm('simple');
$form ->insertDatePicker('datepicker')
->setLabel('Выбор даты (формат yy-mm-dd)')
->setComment('Кликните на поле вызова datepicker')
->setExample(date('Y-m-d'));
Чтобы сделать тоже самое БЕЗ QuickForm как минимум нужно было бы руками прописывать подключение jQueryUI, onload, etc
Или другой пример, использование SWFUpload:
http://jquickform.ru/?page=files_file_multi
PHP:
$form = new jQuickForm('simple');
$form->insertMultiUpload('file','/cms/upload/index.php');
Тоже самое: посмотрите сколько всего пришлось бы подключить и инициализировать, чтобы заработало, а тут всего одна строчка.
Удобно использовать, когда есть более менее устоявшиеся в проекте способы отображения формы (имеется в виду расположение внутри конкретного элемента формы его частей: метки, подписи, самого элемента).
Практически не приходится лезть руками в HTML, а также в большинстве случаев вообще касаться шаблонов, многие вещи в принципе можно решить при помощи CSS, поэтому возможен быстрый старт.
Это конечно же касается в основном простых форм, например в админке, где важна функциональность, а не уникальность, но если же у вас какая то специфичная верстка - просто делаете шаблон для элемента или вообще всей формы
http://jquickform.ru/?page=examples_odnoklassniki
Ну и напоследок, хотелось бы цитату вспомнить, она весьма в тему будет:
# Paul Lomax : "1. Используй то, что есть."
# Paul Lomax : "2. Осознай, что это полный отстой."
# Paul Lomax : "3. Напиши свое."
# Paul Lomax : "4. Подожди, пока кто-то выпустит меньший отстой."
# Paul Lomax : "5. Забрось свое. Используй чужое"