ModExtra - создание своего компонента - проблемы


Здравствуйте!
Василий, спасибо за статью и видео по «клонированию» шаблона ModExtra
Я попробовал все сделать как у вас написано.
В итоге: после установки пакета (из локального хранилища) пункт меню «Компоненты»->«AsupQuery» (это имя компонента) появился, все вроде замечательно. Но по щелчку на этот пункт меню появляется страница с ошибкой:
Fatal error: Class 'AsupQueryBaseManagerController' not found in Z:\home\www\core\components\AsupQuery\index.class.php on line 26

Иду в этот файл, смотрю… (Извиняюсь, что листинг со всеми комментариями, это чтоб номера строк совпадали)
<?php
/**
 * AsupQuery
 *
 * Copyright 2010 by Shaun McCormick <shaun+asupquery@modx.com>
 *
 * AsupQuery is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 *
 * AsupQuery is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * AsupQuery; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 *
 * @package asupquery
 */
require_once dirname(__FILE__) . '/model/asupquery/asupquery.class.php';
/**
 * @package asupquery
 */
class IndexManagerController extends AsupQueryBaseManagerController {
    public static function getDefaultController() { return 'home'; }
}

abstract class AsupQueryBaseManagerController extends AsupQueryManagerController {
    /** @var AsupQuery $asupquery */
    public $asupquery;
    public function initialize() {
        $this->asupquery = new AsupQuery($this->modx);

        $this->addCss($this->asupquery->config['cssUrl'].'mgr.css');
        $this->addJavascript($this->asupquery->config['jsUrl'].'mgr/asupquery.js');
        $this->addHtml('<script type="text/javascript">
        Ext.onReady(function() {
            AsupQuery.config = '.$this->modx->toJSON($this->asupquery->config).';
            AsupQuery.config.connector_url = "'.$this->asupquery->config['connectorUrl'].'";
        });
        </script>');
        return parent::initialize();
    }
    public function getLanguageTopics() {
        return array('asupquery:default');
    }
    public function checkPermissions() { return true;}
}

И дальше не знаю, что делать.
Очень надеюсь на ваш совет.
Спасибо.
24 октября 2012, 11:12    Андрей, Омск   G+  
0    1171 0

Комментарии (11)

  1. Василий Наумкин 24 октября 2012, 11:27 # 0
    Z:\home\www\core\components\

    Извините, я в разработке на windows не разбираюсь. Попробуйте образ для VirtualBox bezumkin.ru/blog/2012/09/24/ubuntu_vbox/

    У меня проблем нет, смотрите видео — bezumkin.ru/blog/2012/10/03/new_modextra/
    1. Андрей, Омск 24 октября 2012, 11:41 # 0
      Василий, я не думаю, что дело в Windows. Подскажите пожалуйста, где (в каком файле) вообще в этом компоненте должен описываться класс modExtraManagerController
      (После переименования в моем случае класс AsupQueryManagerController

      Я вижу, что классы, указанные в index.class.php расширяются от него, а где он сам я никак не найду… :-(
    2. Евгений Дурягин 24 октября 2012, 12:54 # 0
      abstract class AsupQueryBaseManagerController extends AsupQueryManagerController {

      Должно быть extends modExtraManagerController, если у вас где-то еще AsupQueryManagerController не объявлен. Это первое, что бросилось в глаза.
      1. Василий Наумкин 24 октября 2012, 19:43 # 0
        В моем скрипте это учтено.

        А чем переименовывал челок на windows — я не знаю. Вряд ли этим башовым скриптом, с перловыми вызовами.

        Вот и переименовал, похоже, совсем все.
        1. Андрей, Омск 25 октября 2012, 11:31 # 0
          2Василий: Хм. Переименовывал как раз rename_it.sh; кинул его на виртуалку с линуксом и запустил скрипт. Вроде как вполне логично скрипт нашел название modExtraManagerController и поскольку ему сказано искать modExtra и modextra и переименовывать в AsupQuery и asupquery вот он и переименовал.

          Я уже понял, что удобнее с линуксом работать, из-под винды ухожу.

          2Евгений: класс больше нигде не объявлен, потому см. вопрос выше: а где объявляется класс modExtraManagerController? Я так понял, что от modExtra ничего остаться не должно и все классы создаются для нового названия компонента. Может, я ошибаюсь?

          Таким образом, пока не победил проблему.
          1. Василий Наумкин 25 октября 2012, 11:34 # 0
            На 28й строке для этого специальная проверка — https://github.com/bezumkin/modExtra/blob/master/rename_it.sh#L28

            Короче, разбирайтесь, у меня, как видно — все работает.
            1. Андрей, Омск 25 октября 2012, 11:41 # 0
              Я кажется все понял, кроме одного.
              Зачем скрипты rename_it.sh различаются в двух местах…
              https://github.com/splittingred/modExtra/blob/develop/rename_it.sh
              и здесь:
              https://github.com/bezumkin/modExtra/blob/master/rename_it.sh

              В вашем скрипте есть проверка, у splittingred нет.

              В-общем, я брал modExtra в репозитории у Splittingred от этого и проблемы.
              Сейчас возьму из вашего и попробую еще раз.

              PS Может, вам лучше с тем автором скоординировать усилия, а то чайники, вроде меня, тупят на пустом месте, не зная, что предпочесть — оф. документацию или удачные «доработки».
              В любом случае, спасибо за наводку, буду копать.
              1. Василий Наумкин 25 октября 2012, 11:46 # 0
                Вы понимаете, что такое форк?

                Автору я отправил изменения, он их пока не принял. https://github.com/splittingred/modExtra/pull/3

                Будьте внимательнее, на будущее.
      2. Михаил 02 ноября 2013, 22:22 # 0
        Василий, спасибо за отличное пособие для установки на виртуальный сервер. Поставил на комп, хожу на него через роутер. все ок!
        Но пытаюсь ставить modExtra как у тебя по видео, в общем выпил 4 банки пива и не смог.
        Вот такое вот пишет:
        clip2net.com/s/65FaHw
        Уже все пути и так и этак. Никак не получается. Подскажи, может сталкивался.
        1. Василий Наумкин 03 ноября 2013, 09:30 # 0
          Тебе говорят, что нужного файла по указанному пути не найдено.

          Проверяй, почему так.
        2. Константин Ильин 19 апреля 2017, 15:42 # 0
          Приветствую!
          Использовал github.com/bezumkin/modExtra
          Переименовывал через скрипт по инструкции.

          Подскажите пожалуйста, контроллер выдает ошибку, в логе:

          PHP Fatal error:  Class 'modExtraManagerController' not found in /public_html/core/components/component/controllers/lan.class.php on line 8
          Ругается на эту строчку:
          class ComponentPageManagerController extends modExtraManagerController
          {
          /****/
          }
          
          Вы должны авторизоваться, чтобы оставлять комментарии.