Помимо всего прочего SEBLOD имеет в себе встроенную функцию создания многостраничной формы. Это такая форма, информация в которую вводится постепенно.
Обычно многостраничные формы используют там, где требуется получить от пользователя большое количество данных, но при этом не отпугнуть его размерами формы. В этой статье я расскажу о том, как создавать в SEBLOD многостраничные формы, используя опцию Stages.
Содержание
Работа с SEBLOD Stages очень проста, но требует хорошего понимания того, что вы делаете. То, что это не пустые слова, станет понятно ниже, а сейчас давайте еще раз разберемся в том, что такое многостраничная форма и какие они бывают.
Типы многостраничных форм
Многостраничная форма – форма с набором полей, состоящая из нескольких страниц. Самые известные примеры: мастер установки Joomla и мастер установки программ в Windows.
Положим, вы решили создать форму, состоящую из нескольких страниц, которую должен будет заполнить пользователь. Еще на этапе «осмысливания» вашей идеи вы должны задуматься над следующими вопросами:
1) Зачем мне многостраничность?
Основных ответов всего два:
1 – уменьшить размеры общей формы, разбив ее на несколько страниц, чтобы не отпугнуть пользователей;
2 – введенные данные из первой части формы требуются для генерации второй (например, в зависимости от того, какую группу для регистрации пользователь выберет на первой странице формы, заполняемые поля второй странице будут меняться).
Проще говоря, выбираем между эстетической и практической составляющей. Это важно.
2) Каким образом будут собираться и сохраняться данные при переходе от страницы к странице?
Дело тут вот в чем: что произойдет с введенными данными первой страницы формы, когда пользователь заполнит ее и кликнет по кнопке «Далее»? Вариантов два:
1 – данные немедленно сохраняться в базу данных и, по мере заполнения следующих страниц формы, будут дополняться:
2 – заполненные поля формы станут скрытыми, а ранее скрытые поля будут показаны. Так будет происходить до заполнения всех полей мультиформы со всех страниц и, при нажатии на кнопку «Отправить», будут отправлены сразу все данные.
К чему эти вопросы? Многостраничную форму в SEBLOD можно создать разными способами. И от того, как вы ответите на данные вопросы, зависит тип формы, и, следовательно, способ ее создания формы.
Можно определить следующие типы многостраничных форм:
1. Одностраничная форма, имитирующая многостраничность – это стандартная форма с набором полей, особенностью которой является тонкая настройка скриптов. Скрипты настраиваются таким образом, чтобы создать иллюзию многостраничности. К примеру, форма содержит 20 полей. При первоначальной загрузке страницы пользователь видит только 5 полей из 20 и кнопку «Далее». После того, как он заполнит эти поля и нажмет «Далее», сработает скрипт, который скроет заполненные поля (введенные в них данные останутся нетронутыми) и отобразит следующие 5 полей, которые на первом шаге были скрыты. В данном случае с точки зрения кода форма не меняется, а пользователю кажется, что он перешел на следующую страницу. Создать такую форму в SEBLOD можно с помощью Conditional States и Computation Rules.
2. Многостраничная форма, сохраняющая данные на каждом шаге – классическая многостраничная форма. После заполнения всех полей на первом шаге и нажатия кнопки «Далее» в работу включаются не скрипты, а HTML и PHP. В этом случае данные сразу же отправляются на сервер и в базе данных создается неполноценная запись, в которую вносятся только отправленные данные. После этого для пользователя генерируется новая форма, требующая заполнения следующего «пакета» полей. После того, как и вторая страница будет отправлена, новые данные будут добавлены в базу данных не как новая запись, а как обновление существующей. Проще всего это понять на примере стандартной регистрации пользователей. Для регистрации вы вводите лишь минимально необходимый набор данный (логин, пароль, email), а все дополнительные данные профиля заполняются уже после регистрации в личном кабинете. При этом изменения в базе данных происходят в текущей записи, а новой не создается. Текущая запись как бы дополняется данными.
По такому принципу работает функционал Stages в SEBLOD. При отправке данных первого шага формы, материал сохраняется (в базе данных создается запись), и сразу же открывается на редактирование – это будет вторая страница формы. При редактировании будут видны только незаполненные поля, относящиеся ко второй странице. При переходе на третью, данными второй дополнится уже созданная запись в базе данных. Для третьей и последующих страниц формы будут выполняться такие же действия, как и для второй.
3.Многостраничная форма, накапливающая данные полей в параметрах URL – данный тип многостраничной формы не создает запись в базе данных после первой страницы, а передает введенные данные в URL на страницу два. Вторая страница дополняет URL своими данными и отправляет на страницу три, и т.д. Данный способ, на мой взгляд, наиболее удобен, но пока не может быть применен с использованием стандартного функционала SEBLOD.
Таким образом, если вы не планируете создавать сложные зависимости в многостраничной форме, то лучше будет использовать для ее создания Conditional States и Computation Rules. Если же форма сложная, то к вашим услугам Stages, речь о которых пойдет далее.
Создание многостраничной формы с помощью SEBLOD Stages
Само по себе создание многостраничной формы с помощью Stages очень простое. Вы должны:
1. Создать новый тип контента;
2. Добавить к созданному типу контента необходимые поля;
3. Разделить поля разных уровней кнопками «Next», имеющимися в базовом наборе полей;
4. Перейти в настройки формы фронтенда (Siteform/Configuration), в блоке «Stages» найти опцию «Count», устанавливающую количество страниц многостраничной формы и выставить в ней значение.
5. В настройках полей формы нажать кнопку «3» и в колонке «Stages» установить для разных полей разные страницы.
Вот, что получилось в моем примере в результате выполнения вышеописанных действий:
SEBLOD Stages. Вероятные проблемы
Существует достаточно высокая вероятность, что в результате проделанных выше операций вы получите неработающую многостраничную форму. Почему? Потому что нужно понимать, что происходит на каждом этапе работы с формой, и, поскольку с этим мы разобрались, то давайте определим условия, при которых Stages будет работать:
1) Данных на первой странице формы достаточно для создания записи в базе данных. Простой пример: вы решили разделить регистрацию пользователя на две страницы: на первой – Имя и Email, на второй – Логин и Пароль. Очевидно, что данных имени и email’а недостаточно для создания пользователя (создания записи в базе). Поэтому при попытке перейти на вторую страницу многостраничной формы, SEBLOD вернет ошибку незаполненности логина и пароля. С этим вы ничего не сможете поделать, только перенести все обязательные для регистрации поля на первую страницу формы.
2) Текущие права доступа позволяют пользователю редактировать созданные данные. Продолжим первый пример с формой регистрации. Вы решили создать двухстраничную форму регистрации, на первой странице которой вводятся Имя, Email, Логин, Пароль, а на второй странице вводится Информация о пользователе, Пол и Адрес. В данном случае многостраничная форма также выдаст ошибку. Почему? Вспомните про права доступа. Для того чтобы пользователь мог создавать и редактировать свои материалы, у него должны быть права доступа «Автор» или выше. До регистрации на сайте права пользователя «Гость». После заполнения первой страницы и отправки формы пользователь будет зарегистрирован, но не авторизован. После сохранения данных пользователя в базу, SEBLOD попытается открыть его профиль на редактирование для того, чтобы показать вторую страницу многостраничной формы, и при этом упрется в ограничение доступа для гостей. Вы можете изменить права доступа для каждого типа контента. На рисунке ниже показано, где это делается:
Но помните, что гостям нельзя давать права на редактирование материалов.
Понимая как работает SEBLOD Stages, и помня про его ограничения, вы получаете хороший функционал, позволяющий конструировать многостраничные формы, что еще больше расширяет ваши возможности в создании сайтов на Joomla и SEBLOD.
Можно ли организовать с помощью Seblod отправку данных из многостраничной формы на email.