Как подключить свой контроллер в сниппете

Хочу создать класс для работы с внесением корректировок в данные в MySQL. Думаю это реализовать через отдельный класс, так как часто используется в разных сниппетах и с разными данными. В контроллере home.class.php (изначально на modExtra) удалил все и написал свой класс:

<?php

class NewEraChanges {
	public $object = '';
	public $old = '';
	public $new = '';
	public $date_add = '';
	public $date_accept = '';
	public $user_add = '';
	public $user_accept = '';

	public function ChangesArray() {
		echo $this->old;
	}

}
Пытаюсь вызвать в сниппете, но пишет, что не найден такой класс. Я так понял, что дело в том, что я его не подключил. Как это правильно сделать? Во всех сниппетах его отдельно подключать, или как-то можно 1 раз подключить для всех?

<?php
/** @var array $scriptProperties */
/** @var new_era $new_era */
if (!$new_era = $modx->getService('new_era', 'new_era', $modx->getOption('new_era_core_path', null, $modx->getOption('core_path') . 'components/new_era/') . 'model/new_era/', $scriptProperties)) {
	return 'Could not load new_era class!';
}

setlocale(LC_ALL, "ru_RU.UTF-8");
include('pChart/class/pData.class.php');
include('pChart/class/pDraw.class.php');
include('pChart/class/pImage.class.php');
// Dataset definition

$a = new NewEraChanges();
$a->old = '11';
$a->ChangesArray();
Заранее благодарен!
GrinRom
09 апреля 2015, 16:03
modx.pro
2 070
0

Комментарии: 6

GrinRom
09 апреля 2015, 19:05
0
И что прописать в class… extend ??? чтобы работали $modx->newObject, $modx->set/save и т.д.
    GrinRom
    10 апреля 2015, 12:33
    0
    Почитав интернет, вроде как понял, что классы надо не в контроллере, а в моделе прописывать. Но тогда возникает вопрос, как подключить класс из модели?
    Думаю, что решение в getSevice. Прописал(Имя класса и объекта newEraChanges):
    if (!$newEraChanges = $modx->getService('newEraChanges', 'newEraChanges', $modx->getOption('new_era_core_path', null, $modx->getOption('core_path') . 'components/new_era/') . 'model/new_era/', $scriptProperties)) {
    	return 'Could not load newEraChanges class!';
    }
    Но не работает
      GrinRom
      10 апреля 2015, 12:39
      1
      0
      Решил проблему подключив напрямую, но может можно как то более правильно это сделать?
      require_once MODX_CORE_PATH.'components/new_era/model/new_era/newerachange.class.php';
        GrinRom
        10 апреля 2015, 12:44
        0
        Но
        $modx->user->get('id')
        Не работает
          Сергей Шлоков
          10 апреля 2015, 13:26
          0
          Потому что внутри класса обращаться надо через this.
          $this->modx->user->get('id')
            GrinRom
            10 апреля 2015, 14:49
            0
            А подключать через require_once? Или как-то по иному лучше?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6