modExtra и генерация новых таблиц для дополнения
Здравствуйте. Хочу разработать свой компонент, решил использовать заготовку modExtra. Залил ее в корень сайта, запустил modExtra-master/rename_it.php после чего запустил _build/build.transport.php. Странно но в меню его так и не появилось, перешел в Приложение — Установщик, выбрал компонент и нажал Переустановить, после чего он появился в меню Компоненты. После всего этого в базе появилась таблица modx_driverlicense_items, при работе с этой таблицей в компоненте вроде все хорошо. Вручную создал таблицу в phpmyadmin modx_driverlicense_category с 2 полями(ид и имя). Но теперь появляется вопрос, добавление новых таблиц в компонент производить вручную?? Нашел информацию что с этим хорошо справляеться CMPgenerator. создал вот такой вот(скриншот прикрепил)
После чего захожу в Свой компонент и вижу что стандартная вкладка (Предметы), которая связана с таблицей modx_driverlicense_items уже не выводит никакой информации, пишет лишь что «Нет данных для вывода» хотя они там есть.
После чего захожу в Свой компонент и вижу что стандартная вкладка (Предметы), которая связана с таблицей modx_driverlicense_items уже не выводит никакой информации, пишет лишь что «Нет данных для вывода» хотя они там есть.
Комментарии: 16
для добавления новых полей — добавляйте их в схему (.schema.xml). Потом когда делаете build генерируется модель по вашей схеме. Ну и поля добавляются в базу…
Я сначала должен пойти в 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 ?? я правильно понял?
[ 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 ?? я правильно понял?
да, используйте тег code
но этот php генерирует в папку /DriverLicense/core/components/driverlicense/model/driverlicense/, а как сделать что бы генерировал сразу в каталог с установленным компонентом, так как таблицы могут еще меняться/дорабатываться.
А то получается я дописую файл DriverLicense/core/components/driverlicense/model/schema/driverlicense.mysql.schema.xm вручную, после чего генерирую схему выше описаным файлом, опять удалять установленный пакет, устанавливать этот(уже с новой структурой бд) и все делать сначала?
А то получается я дописую файл DriverLicense/core/components/driverlicense/model/schema/driverlicense.mysql.schema.xm вручную, после чего генерирую схему выше описаным файлом, опять удалять установленный пакет, устанавливать этот(уже с новой структурой бд) и все делать сначала?
В конфиге есть ключик, указывающий автоматическую установку компонента при генерации пакета. У Василия в курсе про это написано. Ничего удалять не надо.
Тоесть если я запорю(сломаю) корневой компонент я сломаю и тот что уже становелен? Каким-то образом можно будет откатиться?
Перед установкой обязательно меняй номер версии в конфиге. Чтобы различать версии. После удаления последней версии компонента в менеджере компонентов, старые версии остаются. Их и можно переустановить.
Если я поменяю версию в DriverLicense/_build/build.config.php, потом запущу DriverLicense/_build/build.model.php и DriverLicense/_build/build.transport.php то компонент станет рядом с предыдущим, а не заменит его?
не заменит его?
Нет.
так и не понял что я сделал не так, версию вроде как поменял, запустил билдер но нового не появилось, перезаписался старый(я так понял)
Я наверно неправильно выразился, но я имел ввиду что он Не не встанет рядом. Ну подумай, тогда при обновлении любого компонента у тебя было бы несколько версий каждого компонента, а не один. Старый компонент всегда затирается.
сделал все как в уроках bezumkin.ru/training/course1/2136/
и bezumkin.ru/training/course1/2150/
но после того как я захожу в компонент данные уже не выводятся и в консоли выводится ошибка Uncaught SyntaxError: Unexpected token < VM1018:1
Когда открываю файл с ошибкой весь его код
и 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(первая строка)
Ошибку выше решил, просто в коннекторе дописал еще один dirname(). вроде заработало
Павел, напиши мне в скайп electricatg я тебе расскажу как я прошел этот путь )))
А как заполнить таблицу сразу во время установки дополнения?
За заполнение тех или иных таблиц отвечают резолверы. Пишите новый резолвер. Добавлять его никуда не нужно. Они запускаются все подряд при сканировании каталога. Внутри резолвера пишите такой же код заполнения данными, как вы бы писали в админке MODX в консоли.
Для примера таких резолверов можете посмотреть исходный код популярных компонентов.
Для примера таких резолверов можете посмотреть исходный код популярных компонентов.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.