Формы для WordPress. Часть 2

Исходники плагина, о котором я писал ранее, оказались не такими уж и хорошими. На мой взгляд, код слишком запутан и лишен какой-то целостности — просто набросано туда-сюда. В плане архитектурной прозрачности WP Forms кажется значительно лучше.

Сейчас в WP Forms, собственно, все работает идеально. Подумать стоит лишь об использовании этого плагина для создания форм на страницах настроек тем и плагинов. Вряд ли кто-то из разработчиков решит делать плагин с зависимостью от другого — это все еще WordPress и возможности указания зависимостей, привычных для других PHP-проектов, тут все еще не хватает. Но все же.

Еще одна мысль и идея, на которую я наткнулся, это возможность реализовать AJAX-формы, их валидацию и принятие с помощью PHP. JavaScript конечно будет, но он будет общим для всех форм. Схема работы:

  1. JavaScript инициализируется и начинает следить за всеми формами на странице.
  2. Периодически с помощью Heartbeat API отправляется содержимое форм.
  3. Вся валидация происходит на стороне PHP. Это удобно — не нужно что-то писать на JS и валидация идет в одном месте (не получится так, что в JS форма валидна, а на PHP нет из-за каких-то недоразумений в JS).
  4. В ответ Heartbeat получает данные о том, как должна выглядеть форма после проверки (подсветить красненьким, добавить список ошибок и т. п.).

Плюсы такого подхода:

  1. Пишем меньше кода. Нет никакой логики для формы на JS.
  2. Нет боязни за валидаторы. Все везде работает одинаково.
  3. Формы живые и приятные — можно показывать в форме, что связь с сервером потеряна (или восстановлена). Сохранять содержимое в Local Storage, чтобы данные не потерялись.

Конечно, все это можно реализовать и без Heartbeat. Но, серьезно, кто-то будет это делать? Хорошо если форма на сайте работает просто достаточно отзывчива на странице (я уже даже не говорю про работу с выключенным JS). Как правило, даже крупным сайтам лень сделать форму, которая была бы отзывчива и понятна пользователям.

Минусы:

  1. Валидация не мнгновенна. «Красненьким» поле подсветится лишь через секунд 10-15.
  2. Дополнительная нагрузка на сайт. Хотя я бы не назвал это минусом — ведь сервер и нужен для того, чтобы его использовать. Просто некоторые начинают переживать при виде множества запросов к admin-ajax.php. Такие запросы не навредят сайту. При желании отдельных личностей сервер и без этих формочек уложат.

Тему можно развить и заменить Heartbeat на сокеты. Тогда форма в буквальном смысле будет живой.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s