Jump to main content Jump to doc navigation

Complete these steps after you have installed CMPGenerator.

  1. Created table modx_test with your favorite SQL GUI or command prompt:
CREATE TABLE `modx_test` (
  `name` VARCHAR(64) NOT NULL,
  `description` VARCHAR(64) NOT NULL,
  PRIMARY KEY (`id`)
  1. Go to the Manager then CMPGenerator and click on Create Package Fill in the table info we just created and pick a package name:
  2. Once you hit save all the files are created in /your MODX/core/components/mytest/
  3. Now go lets see if this worked and create a simple snippet to test out our newly created table. Name the Snippet: mytest and insert the following code:

mytest Snippet Code:

 * mytest table
$output = '';// this is what the snippet will return

// add package so xpdo can be used:
$package_path = $modx->getOption('core_path').'components/mytest/model/';
// see the scheme file and the xml model element and you will see the attribute package and that must match here
$modx->addPackage('mytest', $package_path);

// lets add some data!
// see the scheme file and the xml object element and you will see the attribute class and that must match here
// the class name is taken from table names without the prefixed, and is capitalized.
$myRow = $modx->newObject('Test');

$data = array(
        'name' => 'MODX Revolution',
        'description' => 'A great CMS product...'

if ( !$myRow->save() ) {
    $output .= '<p>Could not create row</p>';
} else {
    $output .= '<p>Created row successfully</p>';

// now lets show the data in a quick and dirty table:
$output .= '

// Note for all HTML you should be using Chunks see: <a href="https://docs.modx.com/current/en/building-sites/elements/chunks"> chunks</a>
/* build query */
$query = $modx->newQuery('Test');
$rows = $modx->getIterator('Test', $query);

/* iterate */
$list = array();
foreach ($rows as $row) {
    // from object to array you can also do $row->get('name');
    $row_array = $row->toArray();

    $output .= '
$output .= '

return $output;
  1. Now put the snippet in a resource and run it a few times.

You should see something like this (note my test page has CSS assigned to tables):