Vesthelm Engine

2.1.4 Руководство пользователя

Класс Модель проверки

Класс Модель проверки предоставляет функции для проверки подтвержденных данных (Модель подтвержения), ошибок или удаления данных.

Создание модели проверки

Допустим, вы хотите создать приложение доски объявлений. У вас может быть класс модели проверки, который содержит функции для проверки данных. Вот пример класса модели проверки:

Данные переданные через 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 - массив с ошибками (если нет ошибок массив будет пустым).