
23.09.2009, 22:11
|
 |
Администратор
|
|
Регистрация: 25.07.2009
Сообщений: 170
|
|
10. Модуль "Формы" - возможность использования другими модулям
Модуль "Формы" претерпел революционные изменения, теперь его могут использовать другие модули в собственных целях. Это сделано для удобства создания различных форм и анкет внешними разработчиками и автоматизации профессов проверки, заполнения и отправки данных из форм.
Для использования формы из модуля, необходимо:
1) Установить системное имя формы и статус зарезервированности в таблице forms: значения полей reserved="true" и form_type="системное_имя_на_латинице"
Теперь форма может быть вызвана любым модулем.
Она также стала недоступна для удаления, а также прикрепления ее к странице.
Для вызова формы и получение ее содержимого используется функция:
PHP код:
self::getFormContents($form_type=false, $show_title=false)
, где - form_type - системное имя формы на латинице (значение поля form_type из таблицы базы данных forms)
- show_title - отображение названия формы на странице true / false
Для автоматической проверки значений формы и отправки письма:
PHP код:
self::checkFormContents($form_type=false, $show_title=false, $text)
Значения первых двух переменных аналогичны self::getFormContents - $text - текст, добавляемый к письму, при отправке формы
В случае, если у формы установлено одно или несколько полей с системным именем email, оно заполнено пользователем, на данные адреса также будут отправлены письма с данными из формы. Это удобно, в случае, если необходимо уведомлять об успешной отправке формы не только администратора, но и пользователя, дублируя ему информацию.
11. Модуль "Формы" - добавлена возможность валидации полей формы модулем
В случае, если возможностей встроенных правил валидации полей не хватает, в поле field_validation таблицы form_fields можно указать название модуля, который будет вызван для проверки корректности заполненности поля.
Для осуществления проверки у данного модуля должна быть определена функция проверки:
PHP код:
public function fieldValidation($field_type, $field_value){ return array (validate => true [,message => ""]);
}
- $field_type - передается системное имя поля (значение поля form_type из таблицы базы данных forms)
- $field_value - передается заполненное пользователем значение
Функция должна вернуть массив, содержащий обязательный ключ validate с значением true - если поле прошло валидацию, false - если не прошло.
Ключ message - опционален и содержит текст сообщения об ошибке, который выводится пользователю, в случае если поле не прошло валидацию.
Пример использования:
PHP код:
private $city_title; public function fieldValidation($field_type, $field_value){ // Если не передано название поля или у поля пустое значение if($field_type==NULL || $field_value==NULL) $callback['validate'] = false; // Устанавливаем первичный флаг валидации $callback['validate'] = true; if($field_type=="city_title") { $contents = $this->database->sqlParse("SELECT city_title FROM cities WHERE city_title=?", $field_value); if($contents[0]==NULL) $callback['validate'] = true; else $callback['validate'] = false; } $callback['message'] = "Город <b>".htmlspecialchars($field_value)."</b> уже есть в базе."; return $callback; } public function onExecute($param_str) { // Подгружаем управляющий модуль "Формы" $forms = handyCore::loadExtension ( 'ext.forms' ); if($_POST) { // Текст, добавляемый перед данными из формы $text = "Добавленный город:\n"; // $form_data хранит значения всех заполненных пользователем полей, // при этом к полям, имеющим системное имя можно обращаться как к ключу // $form_data[form_type] $form_data = $forms->checkFormContents("cities", true, $text); // Присваиваем значение системного поля city_title переменной $this->city_title = $form_data['city_title'] if($form_data['form_data']['form_fields']!=NULL) { // Действия модуля с формой // Например внесение данных в БД $this->database ->sqlParse('INSERT INTO cities SET city_title=?', $this->city_title); } } else { if($form_data = $forms->getFormContents("cities", true))){ } else $error = "cities_form_not_found"; } return array ( 'form' => $form_data['contents'], 'template' => 'users_registration.tpl', 'error' => $error ); }
12. Возможность работы системы на 64-bit машинах
Добавлена возможность работы системы на серверах 64-bit
Список будет пополняться
__________________
Команда Handy.CMS
|