modExtra и генерация новых таблиц для дополнения

Здравствуйте. Хочу разработать свой компонент, решил использовать заготовку modExtra. Залил ее в корень сайта, запустил modExtra-master/rename_it.php после чего запустил _build/build.transport.php. Странно но в меню его так и не появилось, перешел в Приложение — Установщик, выбрал компонент и нажал Переустановить, после чего он появился в меню Компоненты. После всего этого в базе появилась таблица modx_driverlicense_items, при работе с этой таблицей в компоненте вроде все хорошо. Вручную создал таблицу в phpmyadmin modx_driverlicense_category с 2 полями(ид и имя). Но теперь появляется вопрос, добавление новых таблиц в компонент производить вручную?? Нашел информацию что с этим хорошо справляеться CMPgenerator. создал вот такой вот(скриншот прикрепил)
После чего захожу в Свой компонент и вижу что стандартная вкладка (Предметы), которая связана с таблицей modx_driverlicense_items уже не выводит никакой информации, пишет лишь что «Нет данных для вывода» хотя они там есть.
Pavel
06 апреля 2015, 09:24
modx.pro
2 496
0

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

Володя
06 апреля 2015, 12:43
0
для добавления новых полей — добавляйте их в схему (.schema.xml). Потом когда делаете build генерируется модель по вашей схеме. Ну и поля добавляются в базу…
    Pavel
    06 апреля 2015, 12:57
    0
    Я сначала должен пойти в DriverLicense/core/components/driverlicense/model/schema/driverlicense.mysql.schema.xml (пакет) добавить в него к примеру
    [ object class=«DriverlicenseCategory» table=«driverlicense_category» extends=«xPDOSimpleObject»]
    [field key=«name» dbtype=«varchar» precision=«256» phptype=«string» null=«false» /]
    [/object]
    Вместо [ и ] — < и >
    Сохранить эту схему и после чего опять запускать DriverLicense/_build/build.model.php ?? я правильно понял?
      Володя
      06 апреля 2015, 13:03
      0
      да, используйте тег code
        Pavel
        06 апреля 2015, 16:17
        0
        но этот php генерирует в папку /DriverLicense/core/components/driverlicense/model/driverlicense/, а как сделать что бы генерировал сразу в каталог с установленным компонентом, так как таблицы могут еще меняться/дорабатываться.

        А то получается я дописую файл DriverLicense/core/components/driverlicense/model/schema/driverlicense.mysql.schema.xm вручную, после чего генерирую схему выше описаным файлом, опять удалять установленный пакет, устанавливать этот(уже с новой структурой бд) и все делать сначала?
          Сергей Шлоков
          06 апреля 2015, 16:39
          0
          В конфиге есть ключик, указывающий автоматическую установку компонента при генерации пакета. У Василия в курсе про это написано. Ничего удалять не надо.
            Pavel
            06 апреля 2015, 18:53
            0
            Тоесть если я запорю(сломаю) корневой компонент я сломаю и тот что уже становелен? Каким-то образом можно будет откатиться?
              Сергей Шлоков
              06 апреля 2015, 18:58
              0
              Перед установкой обязательно меняй номер версии в конфиге. Чтобы различать версии. После удаления последней версии компонента в менеджере компонентов, старые версии остаются. Их и можно переустановить.
                Pavel
                06 апреля 2015, 19:19
                0
                Если я поменяю версию в DriverLicense/_build/build.config.php, потом запущу DriverLicense/_build/build.model.php и DriverLicense/_build/build.transport.php то компонент станет рядом с предыдущим, а не заменит его?
                  Сергей Шлоков
                  06 апреля 2015, 21:10
                  0
                  не заменит его?

                  Нет.
                    Pavel
                    06 апреля 2015, 22:12
                    0
                    так и не понял что я сделал не так, версию вроде как поменял, запустил билдер но нового не появилось, перезаписался старый(я так понял)
                      Сергей Шлоков
                      06 апреля 2015, 22:34
                      0
                      Я наверно неправильно выразился, но я имел ввиду что он Не не встанет рядом. Ну подумай, тогда при обновлении любого компонента у тебя было бы несколько версий каждого компонента, а не один. Старый компонент всегда затирается.
                      Pavel
                      07 апреля 2015, 15:12
                      0
                      сделал все как в уроках bezumkin.ru/training/course1/2136/
                      и bezumkin.ru/training/course1/2150/
                      но после того как я захожу в компонент данные уже не выводятся и в консоли выводится ошибка Uncaught SyntaxError: Unexpected token < VM1018:1

                      Когда открываю файл с ошибкой весь его код
                      (<br />
                      <b>Warning</b>:  require_once(/home/u475162115/public_html/DriverLicense/config.core.php): failed to open stream: No such file or directory in <b>/home/u475162115/public_html/DriverLicense/assets/components/driverlicense/connector.php</b> on line <b>8</b><br />
                      <br />
                      <b>Fatal error</b>:  require_once(): Failed opening required '/home/u475162115/public_html/DriverLicense/config.core.php' (include_path='.:/opt/php-5.5/pear') in <b>/home/u475162115/public_html/DriverLicense/assets/components/driverlicense/connector.php</b> on line <b>8</b><br />
                      )
                      Ошибка на первом закрывающемся теге BR(первая строка)
                      Pavel
                      07 апреля 2015, 16:29
                      0
                      Ошибку выше решил, просто в коннекторе дописал еще один dirname(). вроде заработало
                      Михаил
                      07 апреля 2015, 07:20
                      0
                      Павел, напиши мне в скайп electricatg я тебе расскажу как я прошел этот путь )))
Stepan
08 марта 2022, 16:00
0
А как заполнить таблицу сразу во время установки дополнения?
    Николай Савин
    08 марта 2022, 18:36
    0
    За заполнение тех или иных таблиц отвечают резолверы. Пишите новый резолвер. Добавлять его никуда не нужно. Они запускаются все подряд при сканировании каталога. Внутри резолвера пишите такой же код заполнения данными, как вы бы писали в админке MODX в консоли.
    Для примера таких резолверов можете посмотреть исходный код популярных компонентов.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    16