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, 01: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;
}