Курс по созданию своего дополнения

Здравствуйте. Есть необходимость написать свое дополнение для modx revo, для разбора решила пройтись по примеру разработки:
bezumkin.ru/training/course1/2150/

И встала проблема на шаге прописки пространства имен.
Прописала следующие пути:
Путь к ядру: {base_path}Sendex/core/components/sendex/
Путь к активам: {base_path}Sendex/assets/components/sendex/
Структура файлов примерно следующая:


Код home.class.php
<?php
/**
 * The home manager controller for Sendex.
 *
 */
class SendexHomeManagerController extends SendexMainController {
	/* @var Sendex $Sendex */
	public $Sendex;
	/**
	 * @param array $scriptProperties
	 */
	public function process(array $scriptProperties = array()) {
	}
	/**
	 * @return null|string
	 */
	public function getPageTitle() {
		return $this->modx->lexicon('sendex');
	}
	/**
	 * @return void
	 */
	public function loadCustomCssJs() {
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/misc/sendex.combo.js');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/widgets/queues.grid.js');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/widgets/newsletters.grid.js');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/widgets/home.panel.js');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/sections/home.js');
		$this->addHtml('<script type="text/javascript">
		Ext.onReady(function() {
			MODx.load({xtype: "sendex-page-home"});
		});
		</script>');
	}
	/**
	 * @return string
	 */
	public function getTemplateFile() {
		return $this->Sendex->config['templatesPath'] . 'home.tpl';
	}
}


Код index.class.php
/**
 * Class SendexMainController
 */
abstract class SendexMainController extends modExtraManagerController {
	/** @var Sendex $Sendex */
	public $Sendex;
	/**
	 * @return void
	 */
	public function initialize() {
		$version = $this->modx->getVersionData();
		$modx23 = !empty($version) && version_compare($version['full_version'], '2.3.0', '>=');
		if (!$modx23) {
			$this->addCss(MODX_ASSETS_URL . 'components/sendex/css/mgr/font-awesome.min.css');
		}
		$this->addCss(MODX_ASSETS_URL . 'components/sendex/css/mgr/bootstrap.buttons.min.css');
		$corePath = $this->modx->getOption('sendex_core_path', null, $this->modx->getOption('core_path') . 'components/sendex/');
		require_once $corePath . 'model/sendex/sendex.class.php';
		$this->Sendex = new Sendex($this->modx);
		$this->addCss($this->Sendex->config['cssUrl'] . 'mgr/main.css');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/sendex.js');
		$this->addJavascript($this->Sendex->config['jsUrl'] . 'mgr/misc/utils.js');
		$this->addHtml('<script type="text/javascript">
		Ext.onReady(function() {
			MODx.modx23 = ' . (int)$modx23 . ';
			Sendex.config = ' . $this->modx->toJSON($this->Sendex->config) . ';
			Sendex.config.connector_url = "' . $this->Sendex->config['connectorUrl'] . '";
		});
		</script>');
		parent::initialize();
	}
	/**
	 * @return array
	 */
	public function getLanguageTopics() {
		return array('sendex:default');
	}
	/**
	 * @return bool
	 */
	public function checkPermissions() {
		return true;
	}
}
/**
 * Class IndexManagerController
 */
class IndexManagerController extends SendexMainController {
	/**
	 * @return string
	 */
	public static function getDefaultController() {
		return 'home';
	}
}


При вхождении в модуль в админке выводит следующую ошибку:
Fatal error: Class 'SendexMainController' not found in /paas/c0370/www/Sendex/core/components/sendex/controllers/home.class.php on line 6

Подскажите, пожалуйста, как это исправить. Или может информация уже устарела? И если устарела может ли кто-то подсказать туториалы по актуальнее?

1 комментарий

avatar
Думаю, что для Вас уже не актуально, но для остальных оставлю.
Тоже искал решение этой проблемы, но не нашел, пытался вникать в логику, это тоже ничего не дало, решил посмотреть как устроено всё в miniShop2, там Вася подгружает файл с контроллером, от которого надо сделать расширение класса.
В нашем случае, надо подключить файл index.class.php.
Переходим в файл home.class.php и пишем:

<?php

if (!class_exists('SendexMainController')) {
    require_once dirname(dirname(__FILE__)) . '/index.class.php';
}
...
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.