Thank you so much for any help you can offer. Right now I’m using the same formit2db snippet as you originally posted. I tried modifying it with bits and pieces from this thread, but I’m not sure where to put everything. It’s successfully creating a folder under core/components, but not saving anything to the DB. I have the table and fields all created per your instructions.
formit2db code:
<?php
$prefix=$scriptProperties['prefix'];
$packageName = $scriptProperties['packageName'];
$tablename = $scriptProperties['tablename'];
$packagepath = $modx->getOption('core_path') . 'components/'.$packageName.'/';
$modelpath = $packagepath.'model/';
$modx->addPackage($packageName,$modelpath,$prefix);
$manager= $modx->getManager();
$generator= $manager->getGenerator();
$classname = $generator->getClassName($tablename);
//$errorMsg = '<pre>'.print_r($scriptProperties['fields'],true).'</pre>';
//$hook->addError('error_message',$errorMsg);
//$scriptProperties['hook']->formit->config['emailTo']='[email protected]';
$dataobject=$modx->getObject($classname,array('id'=>$hook->getValue('resource_id')));
if (empty($dataobject)){
$dataobject = $modx->newObject($classname);
//$dataobject->set('createdby', $modx->user->get('id'));
}
else{
//$dataobject->set('editedby', $modx->user->get('id'));
}
if (!is_object($dataobject) || !($dataobject instanceof xPDOObject)) {
$errorMsg='Failed to create object of type: ' . $classname;
$hook->addError('error_message',$errorMsg);
return false;
}
$allFormFields = $hook->getValues();
foreach ($allFormFields as $field=>$value){
if ($field !== 'spam' && $field !== 'resource_id'){
$dataobject->set($field,$value);
}
}
$dataobject->save();
$allFormFields = $hook->getValues();
$arrayfields=array();
$fields=array();
foreach ($allFormFields as $field=>$value){
if ($field !== 'spam' && $field !== 'resource_id'){
if (is_array($field)){
foreach ($field as $key=>$value){
$arrayfields[$key][$field]=$value;
}
}
else{
$fields[]=$value;
}
}
}
//if posted fields were arrays
if (count($arrayfields)>0){
foreach ($arrayfields as $afields){
$dataobject = $modx->newObject($classname);
foreach ($afields as $field=>$value){
$dataobject->set($field,$value);
}
$dataobject->save();
}
}
//if posted fields were normal fields
elseif(count($fields)>0){
$dataobject = $modx->newObject($classname);
foreach ($fields as $field=>$value){
$dataobject->set($field,$value);
}
$dataobject->save();
}
return true;
Formit Call and HTML:
[[!FormIt? &hooks=`spam,formit2db,redirect` &preHooks=`db2formit` &prefix=`oasis_custom_` &packageName=`results` &tablename=`quiz` &redirectTo=`21` &validate=`one:required, two:required, three:required`]]
<div class="quiz">
<form action="[[~[[*id]]]]" method="post">
<input name="resource_id" type="hidden" value="[[+fi.id]]">
<input name="nospam:blank" type="hidden">
<ul>
<li class="clearfix"><div><span class="num">1</span>How often do your eyes feel dry?</div>
<input type="hidden" name="one[]" value="">
<label class="label_radio"><input type="radio" id="1" name="one[]" value="Never" [[!+fi.one:FormItIsChecked=`Never`]]> Never</label>
<label class="label_radio"><input type="radio" id="2" name="one[]" value="Sometimes" [[!+fi.one:FormItIsChecked=`Sometimes`]]> Sometimes</label>
<label class="label_radio"><input type="radio" id="3" name="one[]" value="Mostly" [[!+fi.one:FormItIsChecked=`Mostly`]]> Most of the time</label>
<label class="label_radio"><input type="radio" id="4" name="one[]" value="Always" [[!+fi.one:FormItIsChecked=`Always`]]> Always</label>
<span class="error">[[!+fi.error.one]]</span>
</li>
<li class="clearfix"><div><span class="num">2</span>How often do your eyes feel gritty or as if there is 'something' in your eye?</div>
<input type="hidden" name="two[]" value="">
<label class="label_radio" for="two[]"><input type="radio" id="5" name="two[]" value="Never" [[!+fi.two:FormItIsChecked=`Never`]]> Never</label>
<label class="label_radio" for="two[]"><input type="radio" id="6" name="two[]" value="Sometimes" [[!+fi.two:FormItIsChecked=`Sometimes`]]> Sometimes</label>
<label class="label_radio" for="two[]"><input type="radio" id="7" name="two[]" value="Mostly" [[!+fi.two:FormItIsChecked=`Mostly`]]> Most of the time</label>
<label class="label_radio" for="two[]"><input type="radio" id="8" name="two[]" value="Always" [[!+fi.two:FormItIsChecked=`Always`]]> Always</label>
<span class="error">[[!+fi.error.two]]</span>
</li>
<li class="clearfix"><div><span class="num">3</span>How often do your eyes feel painful, sore, or burning?</div>
<input type="hidden" name="three[]" value="">
<label class="label_radio" for="three[]"><input type="radio" id="9" name="three[]" value="Never" [[!+fi.three:FormItIsChecked=`Never`]]> Never</label>
<label class="label_radio" for="three[]"><input type="radio" id="10" name="three[]" value="Sometimes" [[!+fi.three:FormItIsChecked=`Sometimes`]]> Sometimes</label>
<label class="label_radio" for="three[]"><input type="radio" id="11" name="three[]" value="Mostly" [[!+fi.three:FormItIsChecked=`Mostly`]]> Most of the time</label>
<label class="label_radio" for="three[]"><input type="radio" id="12" name="three[]" value="Always" [[!+fi.three:FormItIsChecked=`Always`]]> Always</label>
<span class="error"> [[!+fi.error.three]]</span>
</li>
<input type="submit" name="go" value="See Results" class="button right">
</ul>
</form>
Again, thank you for your help!