http://wp.od.ua/?p=1014

Создание формы с помощью php шаблонов

Этот метод рассчитан на более подготовленную аудиторию, как минимум надо четко отличать PHP код от HTML, знать простейшие логические конструкции на PHP (if, for …) и как они работают.

1) Все шаблоны расположены в папке /template.

Не рекомендую трогать родные файлы плагина! Хотите что-то изменить создайте новый шаблон на основе дефолтных примеров, подключите его и работайте, в этом случае проблем обновлением плагина не возникнет. Дефольные шаблоны подключаются в ads_init.php, чтобы переключить на свои нужно прописать их в файле ads_config.php например для почты:

2) Какие есть шаблоны:

  • шаблоны формы ввода – form_default_template.php,
    в шаблонах формы можно подключать другие шаблоны (include) : form_uploads.inc.php – загрузка файлов, form_uploads2.inc.php загрузка файлов – вариант можно указать url файла для скачивания напрямую, form_google_map.inc.php – карта google
  • шаблоны отображения post_default_template.php
  • ads_form_login.php – это шаблон закладки редактировать где надо ввести логин и пароль
  • choice_category_template.php – этап выбора категории объявления, шаблон выводит дерево рубрик
  • email_new_post.php и email_edit_post.php – шаблоны писем, первое приходит когда пользователь добавил объявление, второе когда он его отредактировал

Шаблоны формы ввода

Запомните!, шаблон формы подключается(include) дважды. Первый раз для того, чтобы подключить фильтр проверки данных и пропарсить html текст, выловив из него имена поле с префиксами ads_ и adp_. Второй раз – уже непосредственно для печати формы.

В связи с этим все функции в шаблоне должны быть обернуты в конструкцию !function_exists

В последней версии плагина я добавил новое свойство в класс обработчик формы print_form_template
если истина – это значит, что форма печатается, если нет – значит мы просто подключаем фильтр и другие функции.

Парсинг имен

Хочу заострить внимание на этом моменте. Плагин будет обрабатывать только те поля, которые присутствуют в html коде формы. Для этого, при первом подключении мы запускаем регулярное выражение и ищем конструкцию типа:

все найденные имена попадают в свойство $this->ads_fields_form. В старой версии плагина 3.1 это надо было делать вручную

Этот способ также работает.

Автозаполнение полей формы

Автозаполнение работает на библиотеке HTML_FormPersister. Есть одна особенность если вы установите свойство

, то каждый раз при отправке формы это значение будет сбрасываться в

. Чтобы этого избежать атрибут value должен отсутствовать вообще.

Проверка данных, вывод ошибок

Правильность заполнения формы проверяем фильтром, который подключается, как я уже говорил, через проверку function_exists:

Полностью все ошибки хранятся в переменной $msg – настоятельно советую не удалять вывод этой переменной, иначе потом будете долго искать почему не публикуется форма.
Вывод ошибок в шаблоне отдельно для каждого поля :

Кнопки

Вывод управляющих кнопок

Кнопки можно выводить несколько раз вверху формы, посредине, внизу – если форма большая то это очень удобно не надо каждый раз мотать в самый низ.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> [php]…[/php] [html]…[/html] [css]…[/css] [text]…[/text] [code]…[/code]

  • sdfsdfsdf
  • sdfsdfsdfsdf
  • sdfsdfsdfs
  • sdfsdfsdf
  • sdfsdfsdfsdfs
  • sdfsdfsdfs
  • sdfsdfsdf
  • sdfsdfsdfsdfs