Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: xFormer. Класс для генерации форм.
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
Здравствуйте, коллеги.
Одним из самых нелюбимых мною дел в web является составление форм. Немного поискав класс для их генерации, я понял, что удобного для меня в природе ещё нет. Решил написать сам.
formStart($action, $method, $id, $enctype, $name, $target, $accept_charset, $autocomplete, $string)
Возвращает открывающий форму тег <form... Ничего не вернет, если прежде в рамках текущего объекта была открыта и не закрыта форма.
$action - (строка) содержимое атрибута action.
$method - {g|p} метод запроса: (g) GET и (p) POST. По умолчанию POST.
$id - (строка) CSS ID. По умолчанию не используется (false).
$enctype - {0|1|2} способ кодирования данных: (0) application/x-www-form-urlencoded, (1) multipart/form-data и (2) text/plain. По умолчанию (0).
$name - (строка) содержимое атрибута name. По умолчанию не используется (false).
$target - {s|b|p|t} содержимое атрибута target: (s) _self, (b) _blank, (p) _parent и (t) _top. По умолчанию (s).
$accept_charset - {0|1|2} кодировка: (0) не указана, (1) utf-8, (2) windows-1251. По умолчанию не используется (false).
$autocomplete - {0|1} атрибут autocomplete: (0) on, (1) off. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getText($name, $id, $value, $disabled, $readonly, $maxlength, $string)
Возвращает элемент формы "text".
$name - (строка) содержимое атрибута name.
$id - (строка) CSS ID. По умолчанию не используется (false).
$value - (строка) содержимое атрибута value. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$readonly - (любое true, рекомм. 1) добавляет атрибут readonly. По умолчанию не используется (false).
$maxlength - (число) максимальное кол-во символов. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getHidden($name, $value, $id, $disabled, $string)
Возвращает элемент формы "hidden".
$name - (строка) содержимое атрибута name. $value - (строка) содержимое атрибута value.
$id - (строка) CSS ID. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getTextarea($name, $id, $text, $disabled, $readonly, $string)
Возвращает элемент формы "textarea".
$name - (строка) содержимое атрибута name.
$id - (строка) CSS ID. По умолчанию не используется (false).
$text - (строка) текст в textarea. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$readonly - (любое true, рекомм. 1) добавляет атрибут readonly. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getPassword($name, $id, $value, $disabled, $readonly, $maxlength, $string)
Возвращает элемент формы "password".
$name - (строка) содержимое атрибута name.
$id - (строка) CSS ID. По умолчанию не используется (false).
$value - (строка) содержимое атрибута value. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$readonly - (любое true, рекомм. 1) добавляет атрибут readonly. По умолчанию не используется (false).
$maxlength - (число) максимальное кол-во символов. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getCheckbox($name, $value, $checked, $id, $label, $disabled, $string)
Возвращает элемент формы "checkbox".
$name - (строка) содержимое атрибута name.
$value - (строка) содержимое атрибута value. По умолчанию не используется (false).
$checked - (любое true, рекомм. 1) добавляет атрибут checked. По умолчанию не используется (false).
$id - (строка) CSS ID. По умолчанию не используется (false).
$label - (строка) если определено, тег оборачивается вместе с этим текстом в label. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getRadio($name, $itemsArray, $id, $string)
Возвращает группу элементов формы "radio".
$name - (строка) содержимое атрибута name. $itemsArray - (массив) массив* элементов radio.
$id - (строка) CSS ID. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getSelect($name, $itemsArray, $id, $multiple, $disabled, $string)
Возвращает группу элементов формы "select".
$name - (строка) содержимое атрибута name. $itemsArray - (массив) массив* элементов option.
$id - (строка) CSS ID. По умолчанию не используется (false).
$multiple - (любое true, рекомм. 1) добавляет атрибут multiple. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getButton($value, $id, $name, $disabled, $string)
Возвращает элемент формы "button".
$value - (строка) содержимое атрибута value.
$id - (строка) CSS ID. По умолчанию не используется (false).
$name - (строка) содержимое атрибута name. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getReset($value, $id, $name, $disabled, $string)
Возвращает элемент формы "reset".
$value - (строка) содержимое атрибута value.
$id - (строка) CSS ID. По умолчанию не используется (false).
$name - (строка) содержимое атрибута name. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getSubmit($value, $id, $name, $disabled, $string)
Возвращает элемент формы "submit".
$value - (строка) содержимое атрибута value.
$id - (строка) CSS ID. По умолчанию не используется (false).
$name - (строка) содержимое атрибута name. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
getFile($name, $id, $disabled, $string)
Возвращает элемент формы "file". Если enctype формы не multipart/form-data, ничего не выводит.
$name - (строка) содержимое атрибута name.
$id - (строка) CSS ID. По умолчанию не используется (false).
$disabled - (любое true, рекомм. 1) добавляет атрибут disabled. По умолчанию не используется (false).
$string - (строка) любая строка, будет расположена от последнего установленного атрибута до закрывающей скобки.
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
с того чьо заметил - обичный вивод форм. меня же более интересует их обработка - проверка токена, рефера, капча например. также автоматическое разширение - календарь, плейсхолдеры, автокомплит. для админкы подойдет стандарный шаблон например. ну короч хотелось бы полного фарша
DeepVarvar
Отправлено: 10 Мая, 2013 - 09:05:56
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Vinyl пишет:
echo $form->
Ненене, так не пойдет. Никаких эхо (эчо), только буферизация!
И только в шаблоне, либо getGeneratedHTML() либо реализуй __toString(), тогда будет просто echo $form;
Мало ли где я захочу форму вывести, после того как в контроллере например её сформировал.
Ну и соответственно с таким подходом все геттеры переименовать в сеттеры.
Щас исходник гляну - откаменчу тоже. (Добавление)
esterio пишет:
хотелось бы полного фарша
Тогда еще один типа совет - для желаемого esterio фарша добавить возможность прицеплять плагины.
Так например чем текстария не плагин?
Ну и далее..
Еще пока не забыл - очень важно, это декораторы.
Бывает из-за верстки нужно обернуть элемент например в див(-ы). (Добавление)
Псмотрел исходник.
Да, а что, разве нельзя сделать красиво через DOMDocument (или что там еще есть)?
Я не осуждаю - я спрашиваю.
Конкатенация как-то не кошерно выглядит, оно полюбому быстрее будет генерить встроенными средствами нежели конкатенацией.
Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012 Откуда: Армавир, Краснодарский край
Помог: 15 раз(а)
esterio пишет:
с того чьо заметил - обичный вивод форм
Мне только это и нужно было. Для валидации существует множество различных решений.
DeepVarvar пишет:
Ненене, так не пойдет. Никаких эхо (эчо), только буферизация!
Я для примера использовал, дабы показать, что выводится. Мог конечно собрать все в переменную, потом echo {переменная}, только вот в примере не вижу смысла.
DeepVarvar пишет:
Мало ли где я захочу форму вывести, после того как в контроллере например её сформировал.
Дык пожалуйста, собирайте внутри контроллера форму в переменную, потом передавайте её в вид.
DeepVarvar пишет:
добавить возможность прицеплять плагины.
Мне не совсем понятно, что именно Вы имеете ввиду. Тут трактовать можно по-разному. То ли плагин к классу, то ли JS-плагин к textarea.
DeepVarvar пишет:
Так например чем текстария не плагин?
xFormer генерит textarea. Если нужно что-то кастомное добавить в атрибуты, есть параметр $string, если внутрь textarea, для этого есть $text. Или я Вас опять не понял?
DeepVarvar пишет:
Еще пока не забыл - очень важно, это декораторы.
Бывает из-за верстки нужно обернуть элемент например в див(-ы).
Да, а что, разве нельзя сделать красиво через DOMDocument (или что там еще есть)?
Я, признаться, никогда им не пользовался.
DeepVarvar пишет:
Конкатенация как-то не кошерно выглядит
Чего-то все последнее время на конкатенацию бочку катят)) Не знаю, по мне так норм. Хотя если Вы пишете, что DOMDocument будет быстрее работать, то это весомый аргумент, спасибо.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Vinyl пишет:
Ну в том же контроллере
Это то какраз не верно, мы тут мух с котлетами попутаем сразу. Разделяли, разделяли (вид от логики) и тут на тебе - теги в контроллере..
И я имел виду что форма сама должна уметь хранить свое состояние.
Я не должен заботиться о том, что мне надо какую-то переменную заводить лишнюю для того, чтобы хранить состояние экземпляра формы в данной области видимости.
Может я её (форму) по ссылке захочу передать куда-то еще, чтобы забить еще тридцатью полями.
Не передавать же туда недозаконкатенированную строку формы?
А там, на новом месте создавать еще один экземпляр формы?
Так, если экземпляр будет хранить свое состояние, то:
1) Можно передать его куда угодно и дозабить там данными.
2) Не будет проблемы, сгенерили мы "шапку" формы или нет, надо ли нам закрывающий тег формы или нет - генерация строки только в самом конце, когда попросят.
3) Полная инкапсуляция данных в конкретном эккземпляре.
4) Можно добавить возможность "на лету" изменять установленные ранее значения опшнов, чекбоксов etc..
5) Никаких лишних внешних переменных-хранилищ для тех или иных промежуточных результатов.
А иначе это и не ООП по сути, или - ООП ради ООП, или как я раньше писал статьи для новичков с названием "ООП где-то рядом", где рассматривались лишь сами принципы описания классов и создания объектов, но не их применение, где почему так и зачем.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DeepVarvar пишет:
прицеплять плагины
Я имел виду абсолютно кастомные поля.
Так например хидден-поле, а внешне, тот же календарь, который хотел esterio, или вот мне нужна ссылка для открытия нового окна с полем загрузки файла, где после успеха, в родительское окно возвращается в это хидден-поле строка с именем загруженного файла.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.