Подключение своей таблицы в MODX Revolution
Добрый день.
В целях реализации разделения прав решил создать свою таблицу и работать с ней.
Создал таблицу, сгенерировал модель по инструкции. Теперь, как я понимаю, с этой таблицей можно работать с помощью стандартных методов ($modx->getObject(), $modx->getCollection()). Однако сначала надо этот новый класс подгрузить.
Таблица называется modx_rehab_access, путь к модели 'core/components/rehab/model/rehab/'. В этой папке сгенерировался файл access.class.php:
UPD. С целью протестировать редактирование своих вопросов, ну и для сообщества, допишу сюда решение проблемы:
С самого начала я все делал правильно, единственное — путь к новому классу нужно указывать только до папки /model/:
В целях реализации разделения прав решил создать свою таблицу и работать с ней.
Создал таблицу, сгенерировал модель по инструкции. Теперь, как я понимаю, с этой таблицей можно работать с помощью стандартных методов ($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';Попробовал взять код из minishopif (!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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
И еще момент, $modx->getObject извлекает объект, не массив
print_r($access->toArray());
Access — вы точно нигде не ошиблись, у вас есть карта, схема и классы?
Мне не нужно с ней работать из админки, не нужно писать процессоры для нее — нужна просто связь ресурс-пользователь…
Класс уже есть, модель уже готова, xml-схема есть, осталось только указать, откуда класс подгрузить, чтобы работать с таблицей с помощью xPDO, а не прямых запросов в базу…
Может, для каждого пользователя создавать отдельный ТВ и в него записывать, доступен ли ресурс этому пользователю, а потом делать выборку с &tvFilters…
Вы уверены, что надо модель подключать с указанием префикса 'modx_rehab_'? Это я так раньше извращался, при автогенерации xml, а вам оно наверное не надо.
$modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/','modx_rehab_');
$access = $modx->getObject('Access',1);
print $access->get('uid');
$modx->addPackage('rehab', $modx->getOption('core_path').'components/rehab/model/','modx_rehab_');
С десяти до семи вечера по будням я обычно онлайн