Доступна библиотека создания и проверки форм и jQuery?
Оригинальный вопрос
Существует ли хорошо протестированная и, возможно, зрелая библиотека для создания форм в PHP с обеих сторон клиента (сюда входит jQuery) и проверка на стороне сервера?
В идеале форма будет либо генерироваться из классов PHP, либо написана как простой HTML и проанализирована ala Agavi. Правильные jQuery-крючки будут автоматически создаваться библиотекой, чтобы можно было выполнить проверку на стороне клиента jQuery.
Одна из заданий, которые я регулярно выполняю, - это некоторые варианты старой доброй контактной формы, и я хотел бы стандартизировать эту работу, чтобы каждый раз я мог использовать один и тот же код лучшей практики. Имея это в виду, HTML, сгенерированный PHP-классами, должен быть достаточно хорошим, чтобы дополнительные CSS-крючки могли быть добавлены там, где это необходимо и т.д.
Любые предложения с благодарностью получены.
Update
Я расчесывал и просматривал варианты, которые я нашел, и что другие предложили ниже, и на данный момент я буду оценивать проекты в следующем порядке для качества от небольшого количества тестов и исследований, которые я сделал на всех из них.
Я по-прежнему не убежден ни в одном из вариантов честности, и мне остается удивляться, почему люди, которые приступают к этим проектам, не начинаются с каких-то прочных и хорошо протестированных компонентов. Например, я бы подумал о комбинации:
Предоставим вам хорошую стабильную базу для работы и создания хорошей библиотеки поверх тестируемых компонентов.
Также, если вас интересует библиотека, которая анализирует ваш HTML, а не генерирует HTML из класса PHP, я нашел проект под названием Minacl. Как вариант Agavi, о котором я упомянул в исходном вопросе.
Ответы
Ответ 1
Вы можете использовать ValidForm Builder. Он соответствует вашим требованиям:
С его помощью вы можете определить Forms с правилами проверки в PHP и генерировать формы с помощью проверки jQuery и клиента.
Список функций (взятых со своего сайта):
- API создает код, совместимый с XHTML Strict 1.0.
- Проверка поля на стороне клиента для минимизации трафика.
- Проверка поля на стороне сервера для обеспечения соблюдения правил проверки и предотвращения отпуска
с формой через SQL-инъекцию.
- Проверка на стороне клиента отображает встроенную линию, чтобы повысить удовлетворенность пользователей. Нет более раздражающих всплывающих окон, которые на самом деле ничего не говорят.
- Простое создание сложных структур форм.
- Использует популярную библиотеку jQuery Javascript для манипуляций с DOM.
- Полностью настраиваемый с помощью CSS.
- Автоматическое создание сводок полей для почтовых форм формы как в HTML, так и в обычном тексте.
- Это открытый исходный код и, следовательно, полностью бесплатный (здесь репозиторий GitHub)!
Ответ 2
ОБНОВЛЕНО за 2017 год
Agile UI - это библиотека компонентов интерфейса PHP (и преемник atk4.3), включая такие вещи, как:
Все компоненты имеют последовательный и простой интерфейс PHP:
$form = new \atk4\ui\Form();
$layout->add($form);
$form->setModel(new Country($db));
Если вы предпочитаете CRUD, просто используйте \atk4\ui\CRUD
. Agile UI также предлагает инструменты для добавления пользовательских компонентов.
![введите описание изображения здесь]()
Сравнение с альтернативным программным обеспечением:
- Выводит HTML для формы
$form->render()
или для всего веб-приложения.
- Автоматически в стиле Семантический интерфейс
- Проверка на стороне сервера, отображает ошибки в строке.
- Макеты форм
- Включает интерфейс поддержки jQuery.
- Сохраняет данные через Agile Data, SQL, NoSQL
- Поддержка пользовательских HTML-шаблонов
- Открытый и лицензированный в MIT
Ответ 3
Опция, с которой я столкнулся, jFormer, но имеет очень короткую историю, а код PHP менее желателен, массивный файл 3000 строк, полный нескольких классов. Он не требует модульного подхода.
Ответ 4
В чем именно проблемы с проверкой на стороне клиента в HTML_QuickForm2?
Для работы требуется файл quickform.js. Файл устанавливается вместе с пакетом, но не включается автоматически в выходной файл формы. Недавно я обновил документы, чтобы сделать эту проблему более очевидной.
Также у QF2 было несколько выпусков с вашего вопроса, несколько JS-связанных ошибок были раздавлены. Подумайте о том, чтобы дать ему еще одну попытку: мы нацелены на стабильный выпуск Really Soon Now и будем любить отзывы.
Ответ 5
Во время просмотра репозитория PEAR сегодня я заметил, что HTML_QuickForm2 выпустил новую версию, которая теперь поддерживает проверку на стороне клиента. Он не использует jQuery, хотя они написали свою собственную структуру JS для задания.
Ответ 6
Возможно, вы можете использовать структуру Symfony. Он обеспечивает уровень Model-View-Controller и автоматическое формирование формы из модели. Существует множество вариантов проверки. Но я думаю, что есть некоторые изменения, необходимые для интеграции проверки на стороне клиента JQuery.
Ответ 7
Я просто наткнулся на плагин jQuery под названием jquery-ahm. Он перемещает логику проверки на сервер, но выполняет ее на клиенте с помощью JavaScript. В нижней части страницы вы видите пример проверки формы.
Разметка HTML:
<form id="form" action="/a.form" method="post" class="ahm">
<p>Name</p>
<input name="name" id="name" value="" type="text">
<p>Email</p>
<input name="email" id="email" value="" type="text">
<p>Password</p>
<input name="password" id="password" value="" type="text">
<br><input value="Submit Form" type="submit">
</form>
PHP-код:
<?php
// catch errors
foreach (array("name", "email", "password") as $key) {
if (empty($_POST[$key])) {
$error["#$key/addClass"] = "error";
$error["#$key/after"] = "<span class="error">Please enter $key</span>";
}
}
// get response
if (!empty($error)) {
$reset["input.error/removeClass"] = "error";
$reset["span.error/remove"] = "";
$response = $reset + $error; // reset errors before applying new ones
} else {
$response["#form/replaceWith"] = "<strong>Form successfully submitted</strong>";
}
// return response
return $response;
?>
Результат:
![Form output]()