Работа с данными формы
После проверки данных формы, можно извлекать значения полей для дальнейшего использования.
//Значение конкретного поля $form -> getValue("staff"); //Значение (название) поля типа "enum" (не ключ) $form -> getEnumTitle("gender") //Все значения формы, возвращает ассоциированный массив $form -> getAllValues(); /Выборочные значения формы, возвращает ассоциированный массив $form -> getAllValues(array("company", "about", "staff")); //Передача значений формы в объект модели $data = $form -> getAllValues(array("company", "type", "email")); $mv -> clients -> getDataFromArray($data); $mv -> clients -> create(); //Передача значений формы в объект класса Record для создания/обновления записи $values = $form -> getAllValues(array("first_name", "last_name", "email")); $client = $mv -> clients -> findRecordById(34); $client -> setValues($values) -> update(); //Создание списка всех полей для отправки email сообщения $message = $form -> composeMessage(); //Создание списка выборочных полей в нужной последовательности для email сообщения $message = $form -> composeMessage(array("company", "about", "email"));
Полный пример обработки данных формы
Предположим есть URL "/question/" по которому должна открываться контактная форма. Файл шаблона назовем "view-contact.php" и пропишем в файле "config/routes.php" строку "question/" => "view-contact.php". Также создадим в модуле страниц новую страницу с полем "Ссылка" равным "question".
Ниже приведено содержимое файла "views/view-contact.php".
<? $content = $mv -> pages -> findRecord(array("url" => "question", "active" => 1)); $mv -> display404($content); $fields = array( array("Имя", "char", "name", array("required" => true)), array("Email", "email", "email", array("required" => true)), array("Сообщение", "text", "message", array("required" => true)), array("Код безопасности", "char", "captcha", array("required" => true, "captcha" => "extra/captcha-code/"))); $form = new Form($fields); if(!empty($_POST)) { $form -> getDataFromPost() -> validate(); if($form -> getValue("captcha")) if(!isset($_SESSION["captcha"]) || $_SESSION["captcha"] != $form -> getValue("captcha")) $form -> addError("Не верно введен код безопасности."); if(!$form -> hasErrors()) { $message = $form -> composeMessage(array("name", "email", "message")); $message .= $mv -> registry -> getSetting("EmailSigature"); Email :: send($mv -> options -> getValue("email-send"), "Вопрос с сайта", $message); $mv -> reload("?sent"); } } include $mv -> views_path."main-header.php"; ?> <div id="content"> <div id="page" class="editable"> <h2 class="page-name"><? echo $content -> name; ?></h2> <? echo $form -> displayErrors(); if(isset($_GET['sent'])) echo "<p>Ваше сообщение было успешно отправлено.</p>"; else { echo $content -> content; $fields = array("name", "email", "message", "captcha"); include $mv -> views_path."parts/form-typical.php"; } ?> </div> </div> <? include $mv -> views_path."main-footer.php"; ?>
Предыдущий раздел
Проверка полей формы