Подключение своей таблицы в MODX Revolution


Добрый день.

В целях реализации разделения прав решил создать свою таблицу и работать с ней.

Создал таблицу, сгенерировал модель по инструкции. Теперь, как я понимаю, с этой таблицей можно работать с помощью стандартных методов ($modx->getObject(), $modx->getCollection()). Однако сначала надо этот новый класс подгрузить.

Таблица называется modx_rehab_access, путь к модели 'core/components/rehab/model/rehab/'. В этой папке сгенерировался файл access.class.php:
<?php
class Access extends xPDOSimpleObject {}
Создаю сниппет:
$modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/rehab/',
                'modx_rehab_');

$access = $modx->getObject('Access', array('id' => 1));
print_r($access); // Ничего не выводит, хотя в таблице запись есть

print '

Done';
Попробовал взять код из minishop
if (!isset($modx->rehab) || !is_object($modx->rehab)) {
  $modx->rehab = $modx->getService('rehab','Access',
           $modx->getOption('core_path').'components/rehab/model/rehab/', $scriptProperties);
  if (!($modx->rehab instanceof rehab)) return '';
}

$access = $modx->getObject('Access', array('id' => 1));
print_r($access); // Тоже пусто

print '

Done';
Подскажите, как правильно обращаться к созданному классу?

UPD. С целью протестировать редактирование своих вопросов, ну и для сообщества, допишу сюда решение проблемы:

С самого начала я все делал правильно, единственное — путь к новому классу нужно указывать только до папки /model/:
<?php
$modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/','modx_rehab_'); 
$access = $modx->getObject('Access',1);
print $access->get('uid'); 
12 сентября 2012, 10:59    Илья Уткин   G+  
0    2179 0

Комментарии (12)

  1. Иван Брежнев 12 сентября 2012, 12:21 # 0
    А в таблице что-то есть?
    И еще момент, $modx->getObject извлекает объект, не массив
    print_r($access->toArray());

    Access — вы точно нигде не ошиблись, у вас есть карта, схема и классы?
    1. Valentin Rasulov 12 сентября 2012, 12:45 # 0
      Илья, возможно глупость скажу. Смотри, возьми пвкет Doodles https://github.com/artdevue/Doodles, переименнуй под своё название (как переименовать уэе пописывал Василий где-то, да и можно найти решение), залей себе на сервер. А дальше, уже всё как по маслу…
        1. Илья Уткин 12 сентября 2012, 13:28 # 0
          Блин, это мне что же — для работы с маленькой табличкой целый пакет делать?

          Мне не нужно с ней работать из админки, не нужно писать процессоры для нее — нужна просто связь ресурс-пользователь…

          Класс уже есть, модель уже готова, xml-схема есть, осталось только указать, откуда класс подгрузить, чтобы работать с таблицей с помощью xPDO, а не прямых запросов в базу…

          Может, для каждого пользователя создавать отдельный ТВ и в него записывать, доступен ли ресурс этому пользователю, а потом делать выборку с &tvFilters…
          1. Василий Наумкин 12 сентября 2012, 13:40 # 0
            Покажите xml схему.

            Вы уверены, что надо модель подключать с указанием префикса 'modx_rehab_'? Это я так раньше извращался, при автогенерации xml, а вам оно наверное не надо.
            1. Илья Уткин 12 сентября 2012, 13:49 # 0
              <?xml version=«1.0» encoding=«UTF-8»?>

              1. Илья Уткин 12 сентября 2012, 13:51 # 0
                Таблица называется modx_rehab_access, у нее три поля id, did, uid. В поле did буду записывать id ресурса, а в поле uid — id пользователя
                1. Илья Уткин 12 сентября 2012, 14:27 # 0
                  Нашел ошибку у себя путь надо было указывать только до 'model/'
              2. Илья Уткин 12 сентября 2012, 14:29 # 0
                Решение найдено. Правильное подключение созданной таблицы:

                $modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/','modx_rehab_');
                $access = $modx->getObject('Access',1);
                print $access->get('uid');
                1. Илья Уткин 12 сентября 2012, 14:30 # 0
                  Блин))

                  $modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/','modx_rehab_');
                2. Сергей Лелеко 29 ноября 2012, 21:17 # 0
                  Илья, привет! У меня похожая проблема. Можете ли вы помочь советом? Если да то как с Вами связаться можно?
                  1. Илья Уткин 29 ноября 2012, 22:46 # 0
                    Skype ilyautkin
                    С десяти до семи вечера по будням я обычно онлайн
                  Вы должны авторизоваться, чтобы оставлять комментарии.