31 окт. 2013 г., 6:17

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

Пытаюсь пройти по инструкции modx.ws/razrabotka-dopolneniya-v-modx-revolution Получить данные из двух-трёх табличек, это ж простое дело?! Это, если вспомнить заметку об уровнях программирования, практически первый уровень + простейшие знание о msql и phpmyadmin… Но не получается даже тупо по инструкции сделать, не то чтобы управлять своими табличками, строить собственные запросы.. Создаю файлы, класс, поправляю конфиг, открываю http:/сайт-домен/_build/build.schema.php — получаю ошибку
[2013-10-31 08:33:22] (WARN @ /home/путь/public_html/core/xpdo/om/xpdogenerator.class.php: 217) PHP notice: Undefined index: version Done. не нравится ему версия чего-то. Страшно, но пробуем продолжить, файлы о корторых говорилось в статье созданы. Идём дальше, создаём и вызываем сниппет
<br /> <?php <br /> global $modx; $dood = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties); echo $modx->getOption('core_path') ; if (!($dood instanceof Doodles)) { echo '('; return '';} echo 'start'; /* setup default properties */ $tpl = $modx->getOption('tpl',$scriptProperties,'rowTpl'); $sort = $modx->getOption('sort',$scriptProperties,'name'); $dir = $modx->getOption('dir',$scriptProperties,'ASC'); $output = ''; $m = $modx->getManager(); $created = $m->createObjectContainer('Doodle'); return $created ? 'Table created.' : 'Table not created.'; return $output;
ну и ничего не происходит, $dood нет, срабатывает echo '('
Ладно, этот код старый, версия модх у нас последняя, php 5.4, ищем свежую github.com/splittingred/Doodles Ну и опять на стадии запуска http:/сайт-домен/_build/build.schema.php получаю [2013-10-31 09:09:20] (WARN @ /home/путь/public_html/core/xpdo/om/xpdogenerator.class.php: 217) PHP notice: Undefined index: version [2013-10-31 09:09:20] (INFO @ /_build/build.schema.php) Skipping /home/путь/public_html/core/components/doodles/model/doodles/doodle.class.php; file already exists. Move existing class files to regenerate them. [2013-10-31 09:09:20] (INFO @ /_build/build.schema.php) Skipping /home/путь/public_html/core/components/doodles/model/doodles/mysql/doodle.class.php; file already exists. Move existing class files to regenerate them.
Execution time: 0.0450 s Далее не продолжал.
А необходимо расширить профиль рядового пользователя 6-ю пунктами и к тому же сделать удобный интерфейс для частого редактирования этих парамеиров из админки. Вообще-то это ж не хитрая вещь — ну создать ещё табличку с полем id юзера + дополнительные параметры. Ну для файлов — создавать в нужном месте папку с именем юзера и кидать туда файлы, а в базе хранить пути… Это ж просто. Можно в принципе во фронтенде сделать… Вот если мне скажут, что ещё нужно загружать данные профиля в xml — тогда точно сделаю на документах. Чтоб при регистрации — создавался документ — профиль и только админов и юзера-хозяина по id пускали. Там тебе и легко кастомизированные tv и аж несколько вариантов выгрузки из xml… Хотя изврат, конечно.
мм, забей на этот Doodles качай отсюда github.com/splittingred/modExtra(тот же пользователь что и с doodles!) Это компонент-пустышка, распакуй его, единственное что нужно будет сделать, это зайти в консоль линукса, и запустить скрипт rename_it.sh Но предварительно, его нужно немного изменить: repl1=yourName repl2=yourname Здесь указываешь имя своего компонента. Также, у меня была проблема с первой строчкой #!/bin/bash — как я понимаю для дебиана так пойдет, но у меня другой линух, и обработкик этого скрипта находиться по адресу #!/usr/local/bin/bash Попробуй сначало с #!/bin/bash, а потом если выдаст ошибку поменяй на #!/usr/local/bin/bash Заходишь через консоль в папку с modExtra пишешь в консоли chmod +x ./rename_it.sh Затем выполняешь скрипт ./rename_it.sh Затем надо будет скопировать все в папку с modx
а, еще в папке core компонента(пример): \core\components\yourname\index.class.php Нужно будет в строчке abstract class yourNameBaseManagerController extends yourNameManagerController { Заменить на abstract class yourNameBaseManagerController extends modExtraManagerController {
Ага, смотрел видео Наумкина. У меня ssh нет, из-за этого не стал пробовать (ставлю смущённый смайл) Но все-таки такая вещь, как получение данных из таблицы, должна ж быть простой. Вон инструкция для эво — коротенькая. И писал я модуль на эво простенький… Я понимаю, что лыжи-то едут, это я что-то туплю.
Да ну как просто… Тут тебе и админка нужна, и модель описать нужно будет. Это все достаточно легко конечно, но если знаешь как делать) Я тоже сейчас создаю компонент) с созданием админки разобрался, модель создал с помощью скрипта(который писал философ). Но сейчас у меня проблема есть проблема с подключением своего пакета для создания выборок из своих таблиц)) В общей сложности потратил уже дня 3-4 на изучение, и еще до конца и не разобрался:(
Перенес свой видеоурок по созданию компонентов. modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/262.html
Получить данные из таблицы — это не проблема. Но надо знать механизмы. На этом ресурсе полно топиков на эту тему. Вот часть из них по вашей теме: modxclub.ru/blog/118.html modxclub.ru/blog/166.html
модель создал с помощью скрипта(который писал философ)
Я уже давно не пользуюсь своим скриптом. CMPGenerator roolezzz :)))
Спасибо за статьи, но в уроки говориться, как внести в пакет чанки и сниппеты… А как бы цели сделать пакет небыло, нужно получить компонент с отображением и редактированием списка данных из пользовательской, саморучно созданной таблице ч-з интерфейс в админке… ? как-то так…
Скачайте любой готовый компонент с управлением в админке и посмотрите как там это работает. Часть информации вам дали выше. Пропишите у себя контроллеры и шаблоны, и будет вам счастье. Но если вы не знаете php ООП, то не удивляйтесь, что у вас возникают сложности с этой задачей.

Добавить комментарий