FormIt - это компонент или сниппет для MODX Revolution, который позволяет создавать формы и обрабатывать их отправку. FetchIt - это дополнение к FormIt, которое позволяет динамически заполнять поля формы данными.
Чтобы выполнить проверку radio button (переключатель) при помощи FormIt, вам нужно использовать встроенные валидаторы или создать собственные. Ниже приведен пример формы с использованием сниппета FormIt, в которой используется радио-кнопка для выбора опции и встроенный валидатор для обязательного поля.
1. Создайте форму с радио-кнопками, укажите для них одинаковое имя (например, `option`) и разные значения:
```html
[[!FormIt?
&hooks=`email,redirect`
&validate=`option:required`
&emailTpl=`contactEmailTpl`
&emailSubject=`Новое сообщение с вашего сайта`
&emailTo=`[email protected]`
&redirectTo=`123`
]]
<form action="[[~[[*id]]]]" method="post" id="contact-form">
<label for="option1">
<input type="radio" name="option" value="Option 1" id="option1" />
Опция 1
</label>
<label for="option2">
<input type="radio" name="option" value="Option 2" id="option2" />
Опция 2
</label>
<input type="submit" name="submit" value="Отправить" />
</form>
```
В этом примере:
- `&hooks` указывает на хуки, которые будут обрабатывать форму (в данном случае, отправка email и перенаправление после отправки).
- `&validate` использует встроенный валидатор `required`, чтобы убедиться, что выбран хотя бы один из вариантов радио-кнопок.
- Остальные параметры `&emailTpl`, `&emailSubject`, `&emailTo`, `&redirectTo` задают параметры для отправки email и перенаправления.
Если вы хотите добавить пользовательскую валидацию или валидацию на основе определённых условий, вы можете создать кастомный валидатор через hook в FormIt. Создать кастомный хук можно следующим образом:
```php
[[!FormIt?
&hooks=`customValidator,email,redirect`
]]
```
Создайте сниппет с именем `customValidator`:
```php
<?php
if ($hook->getValue('option') != 'Option 1' && $hook->getValue('option') != 'Option 2') {
$hook->addError('option', 'Вы должны выбрать одну из опций.');
return false;
}
return true;
```
В этом коде проверяется значение поля `option` и в случае несоответствия заданным условиям генерируется ошибка.
Касательно FetchIt, это дополнение используется для автоматического заполнения форм, а не для валидации. Для установки значений по умолчанию в радио-кнопки FetchIt может выглядеть примерно так:
```html
<input type="radio" name="option" value="Option 1" [[!FetchIt? &field=`option` &value=`Option 1` &checked=`checked`]] />
<input type="radio" name="option" value="Option 2" [[!FetchIt? &field=`option` &value=`Option 2` &checked=`checked`]] />
```
В этом примере FetchIt проверит значение поля `option` и, если оно совпадает с значением в радио-кнопке, то установит атрибут `checked`, выбирая эту кнопку.
У