Подтвердить что ты не робот

Доступна библиотека создания и проверки форм и jQuery?

Оригинальный вопрос

Существует ли хорошо протестированная и, возможно, зрелая библиотека для создания форм в PHP с обеих сторон клиента (сюда входит jQuery) и проверка на стороне сервера?

В идеале форма будет либо генерироваться из классов PHP, либо написана как простой HTML и проанализирована ala Agavi. Правильные jQuery-крючки будут автоматически создаваться библиотекой, чтобы можно было выполнить проверку на стороне клиента jQuery.

Одна из заданий, которые я регулярно выполняю, - это некоторые варианты старой доброй контактной формы, и я хотел бы стандартизировать эту работу, чтобы каждый раз я мог использовать один и тот же код лучшей практики. Имея это в виду, HTML, сгенерированный PHP-классами, должен быть достаточно хорошим, чтобы дополнительные CSS-крючки могли быть добавлены там, где это необходимо и т.д.

Любые предложения с благодарностью получены.


Update

Я расчесывал и просматривал варианты, которые я нашел, и что другие предложили ниже, и на данный момент я буду оценивать проекты в следующем порядке для качества от небольшого количества тестов и исследований, которые я сделал на всех из них.

Я по-прежнему не убежден ни в одном из вариантов честности, и мне остается удивляться, почему люди, которые приступают к этим проектам, не начинаются с каких-то прочных и хорошо протестированных компонентов. Например, я бы подумал о комбинации:

Предоставим вам хорошую стабильную базу для работы и создания хорошей библиотеки поверх тестируемых компонентов.

Также, если вас интересует библиотека, которая анализирует ваш HTML, а не генерирует HTML из класса PHP, я нашел проект под названием Minacl. Как вариант Agavi, о котором я упомянул в исходном вопросе.

4b9b3361

Ответ 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