Работа с данными формы
После проверки данных формы, можно извлекать значения полей для дальнейшего использования.
//Значение конкретного поля
$staff = $form -> getValue('staff');
//Аналогично с помощью getter
$staff = $form -> staff;
//Заголовок поля типа enum (не ключ)
$form -> getEnumTitle('gender');
//Все значения формы, возвращает ассоциированный массив
$form -> all();
//Выборочные значения формы, возвращает ассоциированный массив
$form -> all(['company', 'about', 'staff']);
//Передача значений формы в объект Record
$values = $form -> all(['company', 'type', 'email']);
$record -> setValues($values);
$record -> create();
//Либо в одну строку
$record -> setValues($form -> all()) -> update();
//Создание списка всех полей для отправки email сообщения
$message = $form -> composeMessage();
//Создание списка выборочных полей в нужной последовательности для email сообщения
$message = $form -> composeMessage(['company', 'about', 'email']);
Полный пример обработки данных формы
Предположим есть URL /question по которому должна открываться контактная форма. Создадим шаблон и пропишем файл шаблона в маршрутах.
//Файл config/routes.php
'/question' => 'view-question.php',
Также создадим в модуле страниц новую страницу с полем Ссылка равным 'question'.
Ниже приведено содержимое файла views/view-question.php.
<?
$content = $mv -> pages -> find(['url' => 'question', 'active' => 1]);
$mv -> display404($content);
$fields = [
['Имя', 'char', 'name', ['required' => true]],
['Email', 'email', 'email', ['required' => true]],
['Сообщение', 'text', 'message', ['required' => true]],
['Файлы', 'file', 'files', ['files_folder' => 'files_questions', 'multiple' => 3]],
['Код безопасности', 'char', 'captcha', [
'required' => true,
'captcha' => 'extra/captcha-simple',
'session_key' => 'captcha']]
];
$form = new Form($fields);
$form -> useTokenCSRF();
$form -> submit() -> validate();
if($form -> isSubmitted() && $form -> isValid())
{
$message = $form -> composeMessage(['name', 'email', 'files', 'message']);
Email::send('hello@world.com', 'Вопрос с сайта', $message);
$mv -> reload('?sent');
}
include $mv -> views_path.'main-header.php';
?>
<div id="content">
<h1><? echo $content -> name; ?></h1>
<?
echo $form -> displayErrors();
if(isset($_GET['sent'])):
?>
<div class="success">Ваше сообщение было успешно отправлено.</div>
<? else: ?>
<form method="post" enctype="multipart/form-data">
<? echo $form -> display(); ?>
<div class="buttons">
<? echo $form -> displayTokenCSRF(); ?>
<button>Отправить</button>
</div>
</form>
<? endif; ?>
</div>
<?
include $mv -> views_path.'main-footer.php';
?>
Предыдущий раздел
Безопасность форм