Vesthelm Engine

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

Класс Модель действия

Класс Модель действия предоставляет функции для установки действий контроллера и назначения имен столбцов таблицы, которые будут проверяться и подтверждаться при помощи моделей: Модель проверки и Модель подтвержения.

Создание модели действия

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

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

class Bulletin_Board_Bulletin_Action extends Vesthelm_Action_Model {

    public function __construct() {
        //действия переданные через HTTP метод $_POST
        $this->set('add', array('plan_id', 'category_id', 'period', 'user_id', 'username', 'payment_system'));
        $this->set('edit', array('id', 'plan_id', 'category_id', 'period', 'user_id', 'username', 'payment_system'));
        
        //действия переданные через HTTP метод $_GET
        $this->set('get', array('id'));        
        $this->set('get-images', array('id', 'field_name'));
    }

}

Первый аргумент в функции set() имя действия контроллера. Второй аргумент - массив содержащий имена столбцов таблицы.

Анатомия модели действия

Классы моделей действий расположены в каталогах:

//Модели действий сайта
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_Action_Model_Name_Action extends Vesthelm_Action_Model {
    function __construct(){}
}

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

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

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

class Bulletin_Board_Bulletin_Action extends Vesthelm_Action_Model {
    function __construct(){}
}

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

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

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

Вызов модели действия

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

$Bulletin_Action_Model = $this->bulletin_board->Bulletin_Action;

//идентичны
$Bulletin_Action_Model->get();
$this->bulletin_board->Bulletin_Action->get();

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