$prefix = 'xyz_'; $tablename = 'chronicles'; $packagename = 'chronicleThis'; $packagepath = $modx->getOption($packagename . '.core_path', NULL, $modx->getOption('core_path') . 'components/' . $packagename . '/'); $modelpath = $packagepath . 'model/'; $schemapath = $modelpath . 'schema/'; $schemafile = $schemapath . $packagename . '.mysql.schema.xml'; $manager = $modx->getManager(); $generator = $manager->getGenerator(); $generator->parseSchema($schemafile, $modelpath); $modx->addPackage($packagename, $modelpath, $prefix); $classname = $generator->getClassName($tablename);
$prefix = 'xyz_'; $classname = 'Chronicle'; $packagename = 'chroniclethis';//should be lowercase $packagepath = $modx->getOption($packagename . '.core_path', NULL, $modx->getOption('core_path') . 'components/' . $packagename . '/'); $modelpath = $packagepath . 'model/'; $modx->addPackage($packagename, $modelpath, $prefix);
the package needs to be registered somewhere, before you can use its classes and you will need to know the classname.
then this is enough:
$prefix = 'xyz_'; $classname = 'Chronicle'; $packagename = 'chroniclethis';//should be lowercase $packagepath = $modx->getOption($packagename . '.core_path', NULL, $modx->getOption('core_path') . 'components/' . $packagename . '/'); $modelpath = $packagepath . 'model/'; $modx->addPackage($packagename, $modelpath, $prefix);
you can also register your package with the system-setting 'extension-packages', if you need to have it registered on every request.