← Cloudflare Pages / pages / tutorials
Добавьте HTML-форму с помощью Formspree
Почти каждому сайту, будь то простая портфолио-страница на HTML или сложное приложение на JavaScript, понадобится форма для сбора пользовательских данных. Formspree ↗ это бэкенд-сервис для обработки и хранения данных форм, позволяющий разработчикам добавлять формы на сайт без написания серверного кода или функций.
В этом руководстве вы создадите <form> с помощью обычных HTML и CSS и добавить ее на статический HTML-сайт, размещенный на Cloudflare Pages. Обратитесь к Руководство по началу работы чтобы ознакомиться с платформой. Вы будете использовать Formspree для сбора отправленных данных и рассылки уведомлений по электронной почте при поступлении новых заявок, без необходимости писать код на JavaScript или на стороне сервера.
Настройка
Для начала создайте новый репозиторий GitHub ↗. Затем создайте новый локальный каталог на своем компьютере, инициализируйте git и подключите расположение GitHub в качестве удаленного репозитория:
# create new directory
mkdir new-project
# enter new directory
cd new-project
# initialize git
git init
# attach remote
git remote add origin [email protected]:<username>/<repo>.git
# change default branch name
git branch -M mainТеперь можно приступить к работе в new-project директорию, которую вы создали.
Разметка веб-сайта
В этом примере проекта используется только обычный HTML. На главной странице будет форма обратной связи, принимающая имя, адрес электронной почты и сообщение.
Код формы:
<form method="POST" action="/">
<label for="name">Full Name</label>
<input id="name" type="text" name="name" pattern="[A-Za-z]+" required />
<label for="email">Email Address</label>
<input id="email" type="email" name="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Submit</button>
</form> action атрибут определяет, куда отправляются данные формы. Позже вы измените это, чтобы отправлять данные формы в Formspree. Все <input> теги должны иметь уникальный name чтобы получить данные пользователя. for и id значения должны совпадать, чтобы связать <label> с соответствующим <input> для инструментов специальных возможностей, таких как программы чтения с экрана.
Чтобы добавить эту форму на сайт, сначала создайте public/index.html в каталоге вашего проекта. public директория должна содержать все ресурсы фронтенда, а index.html файл будет служить главной страницей сайта.
Скопируйте и вставьте следующее содержимое в public/index.html файл, который включает форму, показанную выше:
<html lang="en">
<head>
<meta charset="utf8" />
<title>Form Demo</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
<!-- the form from above -->
<form method="POST" action="/">
<label for="name">Full Name</label>
<input id="name" type="text" name="name" pattern="[A-Za-z]+" required />
<label for="email">Email Address</label>
<input id="email" type="email" name="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Submit</button>
</form>
</body>
</html>Теперь у вас есть HTML-документ с формой обратной связи, содержащей несколько полей для заполнения пользователем. Однако вы ещё не задали action атрибут на сервер, способный обработать данные формы. Вы сделаете это в следующем разделе этого руководства.
Бэкенд Formspree
HTML-форма готова, однако при её отправке данные будут отправлены в виде POST запрос к / URL. По этому URL не существует сервера для обработки данных, поэтому произойдёт ошибка. Чтобы это исправить, создайте новую форму Formspree и скопируйте её уникальный URL в action.
Чтобы создать форму Formspree, зарегистрируйтесь на аккаунт на Formspree ↗.
Далее создайте новую форму с помощью + Новая форма кнопку. Назовите его Contact-us form и обновите email получателя на адрес, на который должны приходить отправленные формы. Затем выберите Создайте форму.
Затем появятся инструкции о том, как интегрировать новую форму.
Скопируйте Form Endpoint URL и вставьте его в action атрибут формы, которую вы создали выше.
<form method="POST" action="https://formspree.io/f/mqldaqwx">
<!-- replace with your own formspree endpoint -->
</form>Теперь при отправке формы вы должны попасть на страницу благодарности. Данные формы будут отправлены в ваш аккаунт на Formspree.io ↗.
Теперь можно настроить логику обработки формы, чтобы изменить страница редиректа ↗, обновите адрес электронной почты для уведомлений ↗, или добавить такие плагины, как Google Sheets ↗, Slack ↗ и многое другое.
Дополнительную помощь по настройке Formspree см. в следующих ресурсах:
- Общую справку по Formspree см. в Сайт справки Formspree ↗.
- Примеры и идеи для собственных HTML-форм см. в Библиотека форм Formspree ↗.
- Советы по интеграции Formspree с популярными платформами, такими как Next.js, Gatsby и Eleventy, см. в Руководства по Formspree ↗.
Развёртывание
Теперь можно развернуть проект.
Если вы еще этого не сделали, сохраните прогресс в git и затем отправьте коммит (или несколько коммитов) в репозиторий GitHub:
# Add all files
git add -A
# Commit w/ message
git commit -m "working example"
# Push commit(s) to remote
git push -u origin mainТеперь ваш код находится в репозитории GitHub, а значит, Pages тоже имеет к нему доступ.
Если это ваш первый проект Cloudflare Pages, ознакомьтесь с Начало работы для получения полного руководства по настройке. После выбора нужного репозитория GitHub необходимо настроить проект со следующими параметрами сборки:
- Название проекта : На ваш выбор
- Продакшен-ветка,
main - Framework preset : Нет
- Команда сборки : Нет / Пусто
- Каталог вывода сборки,
public
После выбора Save and Deploy, начнется первое развертывание вашего проекта Pages. В случае успеха вы увидите уникальный *.pages.dev поддомен и ссылку на демонстрацию вашего проекта.
В этом руководстве вы создали и развернули сайт с помощью Cloudflare Pages и Formspree для обработки отправки форм. Вы создали статический HTML-документ с формой, которая взаимодействует с Formspree для обработки и хранения запросов на отправку и отправки уведомлений.
Если вы хотите просмотреть полный исходный код этого приложения, вы можете найти его на GitHub ↗.