Vesthelm Engine

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

Класс Модель подтвержения

The Validate_Model class provides functions to validate $_GET and $_POST data.

Создание модели подтвержения

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

$_GET:

URL:

http://example.com/index.php?id=10
defined('V_IN_FRONTEND') or die('Powered by <a href="http://www.vesthelm.com/">Vesthelm EE</a>');

class Bulletin_Board_Bulletin_Validate_GET extends Vesthelm_Validate_Model {

    public function id() {
        $f = __FUNCTION__;

        $value = $this->Input->get($f);
        $value = intval($value);
        
        return $value;
    }

}

Функция id() подтвердит значение $_GET['id'], изменит тип на целое число и вернет число: 10.

Имя функции id - имя столбца таблицы, указанное в модели действия (Модель действия).

$_POST:

defined('V_IN_FRONTEND') or die('Powered by <a href="http://www.vesthelm.com/">Vesthelm EE</a>');

class Bulletin_Board_Bulletin_Validate_POST extends Vesthelm_Validate_Model {

    public function id() {
        $f = __FUNCTION__;

        $value = $this->Input->post($f);
        $value = intval($value);

        return (int) $value;
    }

}

Функция id() подтвердит значение $_POST['id'], изменит тип на целое число и вернет число: 10.

Имя функции 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_Validate_Model_Name_Validate_HTTP_METHOD_NAME extends Vesthelm_Validate_Model {
    public function column_name() {}
}

Enhancement_Name - имя приложения. Имена приложений должны начинаться с заглавной буквы после символа _ подчеркивания.

Validate_Model_Name - имя модели. Имена моделей проверки должны начинаться с заглавной буквы после символа _ подчеркивания. Убедитесь, что ваш класс наследует базовый класс модели проверки (Vesthelm_Validate_Model).

HTTP_METHOD_NAME один из методов HTTP (POST или GET).

Имя функции column_name - имя столбца таблицы, указанное в модели действия (Модель действия).

Имя файла будет таким же, как имя класса (Validate_Model_Name_Validate_HTTP_METHOD_NAME). Например, если ваш класс:

class Bulletin_Board_Bulletin_Validate_GET extends Vesthelm_Validate_Model {
    public function column_name() {}
}

Ваш файл будет:

example.com/applications/bulletin-board/acp/models/Bulletin_Validate_GET.php

//или
example.com/applications/bulletin-board/acp/models/bulletin/Bulletin_Validate_GET.php

Вызов модели подтвержения

Вызов модели подтвержения приложения доски объявлений:

$Bulletin_Validate_GET = $this->bulletin_board->Bulletin_Validate_GET;

//идентичны
$Bulletin_Validate_GET->get('id');
$this->bulletin_board->Bulletin_Validate_GET->get('id');

bulletin_board - имя приложения и Bulletin_Validate_GET - имя модели подтвержения.