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, 07:12
modx.pro
3 802
0

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

Василий Наумкин
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/
    Андрей, Омск
    24 октября 2012, 11:41
    0
    Василий, я не думаю, что дело в Windows. Подскажите пожалуйста, где (в каком файле) вообще в этом компоненте должен описываться класс modExtraManagerController
    (После переименования в моем случае класс AsupQueryManagerController

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

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

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

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

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

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

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

          Короче, разбирайтесь, у меня, как видно — все работает.
            Андрей, Омск
            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 Может, вам лучше с тем автором скоординировать усилия, а то чайники, вроде меня, тупят на пустом месте, не зная, что предпочесть — оф. документацию или удачные «доработки».
            В любом случае, спасибо за наводку, буду копать.
              Василий Наумкин
              25 октября 2012, 11:46
              0
              Вы понимаете, что такое форк?

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

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

        Проверяй, почему так.
        Константин Ильин
        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
        {
        /****/
        }
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          11