Hello
From
FormIt Roadmap
FormIt 2.0.0
Save form results to DB
Iterative snippet to grab saved form results and display in table/graph format
It will happens... but for now you’ll have to write your custom hook/snippets and table schema...
I think I have seen somewhere in the forum a thread about a formit2db but don’t remember where...
Cheers
Quote from: anso at Sep 22, 2010, 06:57 AM
The example on the forum you are referring to is saving to existing MODx tables using existing MODx xPDO objects e.g. resources. If you need to save to a custom table, you can follow the code I posted above.
I’ll work on a little tutorial: "How to save formit forms to custom database tables in 5 minutes"
It’s not difficult but should be documented explicitly somewhere as it’s a common use case.
Waiting for this tutorial. Please make this simple for us noobs
[[!FormIt? &validate=`email:email:required` &emailSubject=`New subscriber` &emailFromName=`YOUR/YOUR CLIENT'S NAME` &emailTo=`YOUR EMAIL ADDRESS` &hooks=`email,ias_addSubscriber,FormItAutoResponder,redirect` &redirectTo=`5`]]
$base_path = !empty($base_path) ? $base_path : $modx->getOption('core_path').'components/ias_newsletter/'; $modx->addPackage('ias_newsletter',$base_path.'model/'); $subscriber_form = $modx->newObject('ias_newsletter'); $subscriber_form->fromArray($scriptProperties['fields']); $subscriber_form->save(); return true;
<?php $prefix=$scriptProperties['prefix']; $packageName = $scriptProperties['packageName']; $tablename = $scriptProperties['tablename']; $restrictPrefix = true; $packagepath = $modx->getOption('core_path') . 'components/'.$packageName.'/'; $modelpath = $packagepath.'model/'; $schemapath = $modelpath.'schema/'; $schemafile = $schemapath.$packageName.'.mysql.schema.xml'; if (!file_exists($schemafile)){ $manager= $modx->getManager(); $generator= $manager->getGenerator(); if (!is_dir($packagepath)) { mkdir($packagepath, 0777); } if (!is_dir($modelpath)) { mkdir($modelpath, 0777); } if (!is_dir($schemapath)) { mkdir($schemapath, 0777); } //Use this to create a schema from an existing database $xml= $generator->writeSchema($schemafile, $packageName, 'xPDOObject', $prefix, $restrictPrefix); //Use this to generate classes and maps from your schema // NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes $generator->parseSchema($schemafile, $modelpath); } $modx->addPackage($packageName,$modelpath,$prefix); $classname = strtoupper(substr($tablename, 0, 1)) . substr($tablename, 1) . ''; if (isset($_GET['resId'])){ if ($dataobject=$modx->getObject($classname,array('id'=>$_GET['resId']))){ $hook->setValues($dataobject->toArray()); } //$errorMsg = '<pre>'.print_r($dataobject->toArray(),true).'</pre>'; //$hook->addError('error_message',$errorMsg); } return true; ?>
//Use this to create a schema from an existing database $xml= $generator->writeSchema($schemafile, $packageName, 'xPDOObject', $prefix, $restrictPrefix); //Use this to generate classes and maps from your schema // NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes $generator->parseSchema($schemafile, $modelpath);
core components yourcomponent model yourcomponent sometable.class.php mysql sometable.class.php sometable.map.inc.php schema schemafile.xml
<?php /* Add ah_postings package */ $path = MODX_CORE_PATH . 'components/ah_postings/'; $result = $modx->addPackage('ah_postings',$path . 'model/','vw_ah_pos_'); /* Create new posting object */ $position = $modx -> newObject('Postings'); /* Get some FormIt values/fields with hook API*/ $usr = $hook -> getValue('usr'); $department = $hook -> getValue('department'); $duration = $hook -> getValue('duration'); $renumeration = $hook -> getValue('renumeration'); $appmethod = $hook -> getValue('apply-method'); $interns = $hook -> getValue('interns'); $date = $hook -> getValue('date'); /* Add each of the entries/fields to the object */ $position->set('usr',$usr); $position->set('department',$department); $position->set('duration',$duration); $position->set('renumeration',$renumeration); $position->set('apply-method',$appmethod); $position->set('interns',$interns); $position->set('date',$date); /* Save the object */ $position->save(); return true;
&hooks=`snippetname,email`
if (!is_object($position) || !($position instanceof xPDOObject)) { $errorMsg='Failed to create object of type:Postings '; $hook->addError('error_message',$errorMsg); return false; }