Процессор не найден: mgr/name/getlist

Добрый день!
Создаю админку для своего компонента по статье.Возникла проблема вывода грида полей объекта. Экшн прописан как в статье
baseParams: { action: 'mgr/name/getList' }
Процессор на фоходится в core/components/component_name/processors/mgr/name/getList.class.php. «Сеть» файрбага показывает, что файл assets/components/component_name/connector.php возвращиет сообщение
Процессор не найден: mgr/name/getlist
Подскажите, что могло пойти не так или хотя бы как можно найти где допущена ошибка. Заранее благодарен.
Орлов  Сергей
24 февраля 2014, 16:55
modx.pro
1
3 678
0

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

Орлов  Сергей
25 февраля 2014, 17:42
0
Неужели никто не разбирался, как построена админка и пользуются modExtra'ми или Doodles'ами?
    Илья Уткин
    25 февраля 2014, 17:57
    0
    Попробуйте переименовать файл процессора в getlist.class.php (все буквы строчные)
      Орлов  Сергей
      25 февраля 2014, 18:03
      0
      Спасибо, что откликнулись) имя файла состоит только из строчных букв, здесь просто опечатка
        Илья Уткин
        25 февраля 2014, 18:07
        0
        А можно посмотреть на файлы
        core/components/component_name/index.class.php
        и
        core/components/component_name/controllers/home.class.php
          Орлов  Сергей
          25 февраля 2014, 19:28
          0
          home.class.php
          <?php
          class CoursesHomeManagerController extends CoursesManagerController
          {
          	public function process(array $scriptProperties = array()){}
          	public function getPageTitle() { return $this->modx->lexicon('courses'); }
          	public function loadCustomCssJs()
          	{
          		$this->addJavascript($this->courses->config['jsUrl'].'mgr/widgets/courses.grid.js');
          		$this->addJavascript($this->courses->config['jsUrl'].'mgr/widgets/home.panel.js');
          		$this->addLastJavascript($this->courses->config['jsUrl'].'mgr/sections/index.js');
          	}
          	public function getTemplateFile() { return $this->courses->config['templatesPath'].'home.tpl'; }
          }
          index.class.php
          <?php
          require_once dirname(__FILE__) . '/model/courses/courses.class.php';
          abstract class CoursesManagerController extends modExtraManagerController {
              public $courses;
              public function initialize() {
                  $this->courses = new Courses($this->modx);
                  $this->addJavascript($this->courses->config['jsUrl'].'mgr/courses.js');
                  $this->addHtml('<script type="text/javascript">
                  Ext.onReady(function() {
                      Courses.config = '.$this->modx->toJSON($this->courses->config).';
                  });
                  </script>');
                  return parent::initialize();
              }
              public function getLanguageTopics() {
                  return array('courses:default');
              }
              public function checkPermissions() { return true;}
          }
          class IndexManagerController extends CoursesManagerController
          {
              public static function getDefaultController() { return 'home'; }
          }
          Courses — это мой компонент. Вроде все как надо… сравнивал с quip'ом — вроде все по аналогии. Но вполне возможно, что я не замечаю пустячной детали
            Илья Уткин
            25 февраля 2014, 19:42
            0
            Ой, извиняюсь, в первую очередь интересен файл /model/courses/courses.class.php — есть ли там указание processorsPath?
              Орлов  Сергей
              25 февраля 2014, 19:53
              0
              конструктор выглядит так:
              function __construct(modX &$modx, array $config = array())
              	{
                      $this->modx =& $modx;
                      $basePath = $this->modx->getOption('courses.core_path',$config,$this->modx->getOption('core_path').'components/courses/');
              		$assetsUrl = $this->modx->getOption('courses.assets_url',$config,$this->modx->getOption('assets_url').'components/courses/');
                      $this->config = array_merge(array(
              			'basePath' => $basePath,
              			'corePath' => $basePath,
              			'modelPath' => $basePath.'model/',
              			'processorsPath' => $basePath.'processors/',
              			'templatesPath' => $basePath.'templates/',
              			'chunksPath' => $basePath.'elements/chunks/',
              			'jsUrl' => $assetsUrl.'js/',
              			'cssUrl' => $assetsUrl.'css/',
              			'assetsUrl' => $assetsUrl,
              			'connectorUrl' => $assetsUrl.'connector.php',
                      ),$config);
              
                      $this->modx->addPackage('courses', $this->config['modelPath']);
                      if ($this->modx->lexicon)
              		{
                          $this->modx->lexicon->load('courses:default');
                      }
                  }
              При этом
              echo $this->config["processorsPath"];
              выдает правильный путь к процессорам
                Илья Уткин
                25 февраля 2014, 20:06
                0
                На первый взгляд, все верно… Попробуйте, все-таки, сделать на основе modExtra
                  Орлов  Сергей
                  25 февраля 2014, 20:38
                  0
                  Но, если рассудить логически, то раз ошибок javascript'a нет, панель подгружается, даже грид подгружается — то в javascript'e нет ошибок. Что может влиять на то, что процессор не грузится? — пути к файлам. Тогда возникает вопрос: откуда начинаются формирование пути в action? От processorsPath?
      Евгений Дурягин
      25 февраля 2014, 21:00
      0
      А в connector.php что?
      В modExtra путь к процессору указывается там https://github.com/bezumkin/modExtra/blob/master/assets/components/modextra/connector.php#L16
        Орлов  Сергей
        25 февраля 2014, 21:11
        0
        Спасибо, что не обошли стороной данный вопрос и решели помочь) В коннекторе
        <?php
        require_once dirname(dirname(dirname(dirname(__FILE__)))).'/config.core.php';
        require_once MODX_CORE_PATH.'config/'.MODX_CONFIG_KEY.'.inc.php';
        require_once MODX_CONNECTORS_PATH.'index.php';
         
        $corePath = $modx->getOption('courses.core_path',null,$modx->getOption('core_path').'components/courses/');
        require_once $corePath.'model/courses/courses.class.php';
        $modx->courses = new Courses($modx);
        $modx->lexicon->load('courses:default');
        
        $path = $modx->getOption('processorsPath', $modx->courses->config, $corePath.'processors/');
        $modx->request->handleRequest(array(
            'processorsPath' => $path,
            'location' => '',
        ));
          Орлов  Сергей
          25 февраля 2014, 22:03
          0
          Сейчас заметил, что прямое обращение из браузера к файлу хост/core/components/courses/processors/mgr/course/getlist.class.php возвращает ошибку
          Fatal error: Class 'modObjectGetListProcessor' not found in хост\core\components\courses\processors\mgr\course\getlist.class.php on line 3
          Но наверное эта ошибка появляется из-за того, что обращаемся к процессору не через коннектор?
            Евгений Дурягин
            25 февраля 2014, 22:09
            0
            Да, MODX не проинициализирован
            В коннекторе вроде все верно.

            В JS baseParams: { action: 'mgr/course/getlist' } все-таки с маленькой буквы?
            В процессоре имя класса в конце указано, как в modExtra?
            github.com/bezumkin/modExtra/blob/master/core/components/modextra/processors/mgr/item/getlist.class.php#L36
              Орлов  Сергей
              26 февраля 2014, 05:43
              0
              getlist точно с прописными буквами, код процессора ниже
              Илья Уткин
              25 февраля 2014, 22:29
              0
              Ну и сам процессор теперь покажите. В последней стрчке есть возвращение имени класса?
              return 'courseItemGetListProcessor';
                Орлов  Сергей
                26 февраля 2014, 05:45
                0
                Код процессора выглядит следующим образом:
                <?php
                class CourseGetListProcessor extends modObjectGetListProcessor
                {
                    public $classKey = 'Courses';
                    public $languageTopics = array('courses:default');
                    public $defaultSortField = 'title';
                    public $defaultSortDirection = 'ASC';
                    public $objectType = 'courses.course';
                }
                return 'CourseGetListProcessor';
            Орлов  Сергей
            01 марта 2014, 23:25
            0
            Все таки решил перейти на modExtra, а уже там разобраться с тонкостями работы.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              17