Version is 1.43
The call is (I add the calls from and to database)
[[findBrands]] [[eForm2db]]
[[eForm? &noemail=`true` &formid=`vinitassaggio` &eFormOnBeforeFormParse=`findBrands` &eFormOnBeforeMailSent=`eForm2db` &tpl=`VinitAssaggio` &thankyou=`VinitAssThanks` ]]
This is the form
<div class="box">
<h3>Prenotazione</h3>
[+validationmessage+]
<form method="post" action="" class="pren">
<input name="formid" type="hidden" value="vinitassaggio" />
<fieldset>
<legend class="hide">
Prenotazione assaggio guidato
</legend>
<div>
<label class="lblfull" for="aziende">Aziende per le quali prenotarsi:<br />
<span class="em small">Per selezionare piu' aziende tenere premuto "CTRL" quando si clicca.</span>
</label>
<div class="chkgroup">
<select multiple="multiple" name="aziende" eform="Aziende::1:">
[+options+]
</select>
</div>
</div>
<div>
<Label for="data">Data:</label>
<select id="data" name="data">
<option value="29 Marzo">29 Marzo</option>
<option value="30 Marzo">30 Marzo</option>
<option value="31 Marzo">31 Marzo</option>
<option value="1 Aprile">1 Aprile</option>
<option value="2 Aprile">2 Aprile</option>
</select>
</div>
<div>
<label for="orario">Orario:</label>
<select id="orario" name="orario">
<option value="09:30 - 11:00">09:30 - 11:00</option>
<option value="11:30 - 13:00">11:30 - 13:00</option>
<option value="14:30 - 16:00">14:30 - 16:00</option>
<option value="16:30 - 18:00">16:30 - 18:00</option>
<option value="18:30 - 20:00">18:30 - 20:00</option>
</select>
</div>
<div>
<label for="accompagnatori">Accompagnatori:</label>
<select id="accompagnatori" name="accompagnatori">
<option value="0" selected="selected">Nessuno</option>
<option value="1">1 persona</option>
<option value="2">2 persone</option>
</select>
</div>
<div>
<label for="invfuturi">Vuoi ricevere inviti per altri eventi in futuro?</label>
<input id="invfuturi" name="invfuturi" value="0" type="radio" /><span class="radioopt">No</span>
<input id="invfuturi" name="invfuturi" value="1" checked="checked" type="radio" /><span class="radioopt">Sì</span>
</div>
<div>
<input name="nome" type="hidden" value="[[UserInfo? ¶m=`fullname`]]" eform="::0::" />
<input name="email" type="hidden" value="[[UserInfo? ¶m=`email`]]" eform="::0::" />
<input name="citta" type="hidden" value="[[UserInfo? ¶m=`state`]]" eform="::0::" />
<input name="professione" type="hidden" value="[[UserInfo? ¶m=`profession`]]" eform="::0::" />
<input class="submitbtn" value="Invia" name="" type="submit">
</div>
</fieldset>
</form>
</div>
This is the eForm2db function
function eForm2db( &$fields )
{
/*---------------------------------------------------------------
eForm2db
Version: 0.1 [Beta 1]
Author: pixelchutes
---------------------------------------------------------------
Requirements:
eForm 1.4+
---------------------------------------------------------------
Use:
- Takes validated eForm submittal data for use with the MODx DBAPI extender class.
- Easily process database records referencing your form submission data:
+ INSERT new records to a table of your choice
+ UPDATE existing records if you'd prefer
+ DELETE records based on form submittal criteria
+ Form a query and return its record set as XML using $modx->db->getXML
+ Query a table's MetaData using $modx->db->getTableMetaData, followed by an update query
on only the form fields that are named after table columns!
+ and much more!
---------------------------------------------------------------*/
// Bring needed resources into scope
global $modx, $table_prefix;
// Init our array
$dbTable = array(); // key = DB Column; Value = Insert/Update value
$dbTable['nome'] = $fields['nome'];
$dbTable['email'] = $fields['email'];
$dbTable['citta'] = $fields['citta'];
$dbTable['professione'] = $fields['professione'];
if ($fields['aziende'] != '') {
$azselected = implode(", ", $fields['aziende']);
} else {
$azselected = 'Nessuna';
}
$dbTable['aziende'] = $azselected;
$dbTable['orario'] = $fields['orario'];
$dbTable['data'] = $fields['data'];
$dbTable['accompagnatori'] = $fields['accompagnatori'];
$dbTable['invfuturi'] = $fields['invfuturi'];
// Run the db insert query
$dbQuery = $modx->db->insert( $dbTable, $table_prefix . 'ev_vinitaly07' );
return true;
}
// Return empty string
return '';
And this is the findBrands function (which fills the multiple select)
function findBrands(&$fields) {
global $modx;
$params = array();
$params['parents'] = '5';
$params['tpl'] = 'DittoOptAz';
$params['filter'] = 'tvvinitaly,Presente';
$params['hiddenTVs'] = 'vinitaly';
$params['depth'] = '1';
$params['summarize'] = '200';
$params['sortBy'] = 'pagetitle';
$params['sortDir'] = 'ASC';
$opts = $modx->runSnippet('Ditto', $params);
$fields['options'] = $opts;
return true;
}
The template for the Ditto call is simply
<option value="[+pagetitle+]">[+pagetitle+]</option>
I’ve tested without the findBrands function, directly providing a simple list of options but it doesn’t change the behaviour of the validation.