Content Management Framework. Easy. Convenient. Free.
Навигация
Новости
Новая версия PHPC!
Очередной стабильный релиз с новыми возможностями.
12 декабря 2010 | Подробнее...
Документация!
Солидное пополнение.
28 октября 2010 | Подробнее...
Обновление документации
Онлайн-руководство начинает потихонечку обновляться.
15 октября 2010 | Подробнее...
Новая версия PHPC!
Вышла новая версия, 2.5.1, с набором полезных изменений.
12 октября 2010 | Подробнее...
DLTFM!
Отныне документация доступна и в формате для скачивания.
30 января 2010 | Подробнее...
Новая документация
Первые разделы Руководства уже на сайте.
20 января 2010 | Подробнее...
Онлайн-поддержка
Теперь вы можете задать свои вопросы через ICQ.
11 января 2010 | Подробнее...

Пример создания формы обратной связи

Работа с формами состоит из двух почти независимых этапов − этап отображения формы на сайте (с возможностью ее заполнения и отправки на сервер) и этап обработки полученных от пользователя данных. В предыдущем примере мы разобрались с вопросом отображения формы на сайте, здесь же затронем второй вопрос, на примере создания формы обратной связи.

Предположим, нам нужно добавить возможность связаться с администратором через форму на сайте. В форме должно быть три поля − имя посетителя, его e-mail и текст сообщения. Отправленные данные уходят на заданный e-mail адрес, который не должен быть доступен посетителю.

Для этого нам придется создать две новые страницы на сайте. Первая, назовем ее feedback, будет отображать форму с полями ввода, а также кнопочку для отправки данных. Вторая, назовем ее actionFeedback, будет так называемым контроллером, она будет обрабатывать полученные после отправки формы данные. Итак:

1. Создайте новую страницу:

  • Имя страницы: feedback
  • Предок: general
  • Шаблон: feedback
  • Заголовок: Обратная связь

2. Создайте шаблон:

  • Имя шаблона: feedback
  • Предок: general
  • Текст шаблона:
<area:content>

<form action="/actionFeedback" method="post">
<input type="hidden" name="action" value="send">
Ваше имя: <input type="text" name="name"><br>
Ваш e-mail: <input type="text" name="email"><br>
Сообщение: <textarea name="message"></textarea><br>
<input type="submit" value="Отправить!">
</form>

</area:content>

Как видите, форма отправляет данные на страницу "actionFeedback", передавая, кроме полей, еще один скрытый параметр "action" со значением "send". Это позволяет использовать один контроллер для обслуживания нескольких различных действий, хотя в данном случае нам это и не нужно. Шаблон можете оформить по своему вкусу, только не меняйте имена полей (action, name, email и message).

3. Зайдите на сайт, откройте страницу feedback и убедитесь, что форма отображается как надо, и что попытка нажать на кнопку "Отправить" приводит к появлению ошибки 404 (страницы-контроллера у нас пока нет).

4. Создайте еще одну страницу:

  • Имя страницы: actionFeedback
  • Предок: general
  • Пакеты: actionFeedback

5. Создайте пакет:

  • Имя пакета: actionFeedback
  • Текст пакета:
$action=acceptStringParameter("action");

switch($action) {
  case "send":
    // Отправка формы обратной связи
    // Прием данных из формы
    $name=acceptStringParameter("name",100);
    $email=acceptStringParameter("email",100);
    $message=acceptStringParameter("message",10000);
    // Проверка данных на корректность
    if(!$name) $compiler->standardError("Пожалуйста, укажите ваше имя.");
    if(!$email) $compiler->standardError("Пожалуйста, укажите ваш e-mail адрес.");
    if(!preg_match(EmailAddressPattern,$email))
      $compiler->standardError("Пожалуйста, укажите корректный e-mail адрес.");
    if(!$message) $compiler->standardError("Пожалуйста, укажите текст сообщения.");
    // Все в порядке, можно выполнять действия
    $scope=compact("name","email","message");
    $subject=$compiler->captureTemplate("mailFeedbackSubject",$scope);
    $message=$compiler->captureTemplate("mailFeedbackMessage",$scope);
    $mailSystem->sendMail($email,$settings["siteAdminEmail"],$subject,$message);
    $compiler->standardRedirect("Спасибо за ваше сообщение!");
}

redirect("/");

6. Создайте вспомогательный шаблон mailFeedbackSubject:

Форма обратной связи на сайте

7. Создайте вспомогательный шаблон mailFeedbackMessage:

Здравствуйте.
На сайте <var:_SERVER:HTTP_HOST> была заполнена форма обратной связи.
Данные формы:
 
Имя: <var:name nofilter>
E-mail: <var:email nofilter>
Сообщение: <var:message nofilter>
 
С уважением,
система управления сайтом.

Как видно из текста пакета, эти два шаблона используются для формирования заголовка и текста уведомления. Если вам нужно изменить оформление письма − просто измените один из этих шаблонов.

8. Зайдите в Настройки сайта (Настройки − Редактирование настроек) и укажите e-mail администратора сайта. Письма будут отправляться на этот адрес.

Документация
Лучшие сайты на PHPC
Наши друзья
Другие интересные CMF
Помогите проекту!
WMZ: Z829076217306
WMR: R735042680488
Онлайн-поддержка
Техподдержка сайтов,
Разработка модулей
ICQ: 564226396