Класс Модель проверки¶
Класс Модель проверки предоставляет функции для проверки подтвержденных данных (Модель подтвержения), ошибок или удаления данных.
Создание модели проверки¶
Допустим, вы хотите создать приложение доски объявлений. У вас может быть класс модели проверки, который содержит функции для проверки данных. Вот пример класса модели проверки:
Данные переданные через HTTP метод $_GET:
defined('V_IN_FRONTEND') or die('Powered by <a href="http://www.vesthelm.com/">Vesthelm EE</a>');
class Bulletin_Board_Bulletin_Check_GET extends Vesthelm_Check_Model {
public function id($value) {
$f = __FUNCTION__;
if (!is_array($value) && !$this->bulletin_board->Bulletin->get('', $value)) {
$this->setError(array($f => lang('bulletin_not_found', 'bulletins', 'bulletin_board')));
}
return $this->getErrors($f);
}
}
Функция id() проверит подтвержденные данные и вернет ошибку, если некоторые данные не были указаны.
Имя функции id - имя столбца таблицы, указанное в модели действия (Модель действия).
Данные переданные через HTTP метод $_POST:
defined('V_IN_FRONTEND') or die('Powered by <a href="http://www.vesthelm.com/">Vesthelm EE</a>');
class Bulletin_Board_Bulletin_Check_POST extends Vesthelm_Check_Model {
public function id($value) {
$f = __FUNCTION__;
if (empty($value)) {
$this->setError(array($f => lang('field_required')));
}
return $this->getErrors($f);
}
}
Функция id() проверит данные и возвратит ошибку, если было указано пустое значение.
Анатомия модели проверки¶
Классы моделей проверки расположены в каталогах:
//модели проверки сайта
example.com/frontend/models
example.com/acp/models
//Модели проверки приложений
example.com/applications/{имя_приложения}/frontend/models
example.com/applications/{имя_приложения}/acp/models
//Модели проверки дополнений
example.com/addons/{имя_дополнения}/frontend/models
example.com/addons/{имя_дополнения}/acp/models
//Иногда модели проверки можно найти здесь (старый способ):
example.com/addons/{имя_дополнения}/frontend/classes
example.com/addons/{имя_дополнения}/acp/classes
Базовый прототип для модели проверки:
class Enhancement_Name_Check_Model_Name_Check_HTTP_METHOD_NAME extends Vesthelm_Check_Model {
public function column_name() {}
}
Enhancement_Name - имя приложения. Имена приложений должны начинаться с заглавной буквы после символа _ подчеркивания.
Check_Model_Name - имя модели. Имена моделей проверки должны начинаться с заглавной буквы после символа _ подчеркивания. Убедитесь, что ваш класс наследует базовый класс модели проверки (Vesthelm_Check_Model).
HTTP_METHOD_NAME один из методов HTTP (POST или GET).
Имя функции column_name - имя столбца таблицы, указанное в модели действия (Модель действия).
Имя файла будет таким же, как имя класса (Check_Model_Name_Validate_HTTP_METHOD_NAME). Например, если ваш класс:
class Bulletin_Board_Bulletin_Check_GET extends Vesthelm_Check_Model {
public function column_name() {}
}
Ваш файл будет:
example.com/applications/bulletin-board/acp/models/Bulletin_Check_GET.php
//или
example.com/applications/bulletin-board/acp/models/bulletin/Bulletin_Check_GET.php
Вызов модели проверки¶
Вызов модели проверки приложения доски объявлений:
$Bulletin_Check_GET = $this->bulletin_board->Bulletin_Check_GET;
//идентичны
$Bulletin_Check_GET->get('id');
$this->bulletin_board->Bulletin_Check_GET->get('id');
bulletin_board - имя приложения и Bulletin_Check_GET - имя модели проверки.
Получение данных и ошибок модели проверки¶
$validity_check = $Vesthelm->bulletin_board->Bulletin->validityCheck();
$data = $validity_check['data'];
$errors = $validity_check['errors'];
$data - массив с проверенными данными.
$errors - массив с ошибками (если нет ошибок массив будет пустым).