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.  

не нравится ему версия чего-то. Страшно, но пробуем продолжить, файлы о корторых говорилось в статье созданы. Идём дальше, создаём и вызываем сниппет

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… Хотя изврат, конечно.

Comments

мм, забей на этот 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 ООП, то не удивляйтесь, что у вас возникают сложности с этой задачей.