esto es muy útil cuando queremos guardar información a una base de datos distinta a las que vienen con modx, claro que también funcionará con ellas. para que esto funcione, necesitaremos conocer eForm previamente.
La gracia de este acercamiento al ingreso a las bases de datos es que utilizamos el poderoso motor de validación de eForm previo a enviar la información a la base de datos.
nota: el código de este snippet es una versión modificada de eForm2db de pixelchutes, así que él debe llevarse los créditos por el desarrollo de esta alternativa, yo simplemente me rompí la cabeza unas horas hasta que logré entenderlo y juntar toda la información de manera que otros en la comunidad tengan la posibilidad de acceder a un completo tutorial a la herramienta.
primero: haremos una tabla llamada cargas en la base de datos de modx
CREATE TABLE `cargas` (
`id` int(10) unsigned NOT NULL auto_increment,
`fullname` varchar(255) NOT NULL,
`rut` varchar(15) NOT NULL,
`sexo` varchar(5) NOT NULL,
`edad` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT;
segundo: necesitamos un formulario para enviar la información a la base de datos, es por eso que crearemos un nuevo chunk llamado
nuevaCarga
<p class="error">[+validationmessage+]</p>
<form method="post" action="[~[*id*]~]" id="nuevaCarga" name="nuevaCarga">
<fieldset>
<label for="cfName">full name:
<p><input name="fullname" id="cfName" class="text" type="text" eform="Your Name::1:" /></p></label>
<label for="cfEmail">rut:
<p><input name="rut" id="cfEmail" class="text" type="text" /></p> </label>
<label for="cfRegarding">sexo
<p><input name="sexo" id="sexo" class="text" type="text" eform="Form sexo::1"/></p> </label>
<label for="cfMessage">edad:
<p><input name="edad" id="edad" class="text" type="text" eform="Form edad::1"/></p> </label>
<label> </label><p><input type="submit" name="contact" id="cfContact" class="button" value="inscribir" /></p>
</fieldset>
</form>
tercero: llamamos a nuestro snippet creado en la forma de eForm2db
<?php
function agregarCargas( &$fields )
{
global $modx;
// Init our array
$dbTable = array();
$dbTable[fullname] = $fields[fullname];
$dbTable[rut] = $fields[rut];
$dbTable[sexo] = $fields[sexo];
$dbTable[edad] = $fields[edad];
// Run the db insert query
$dbQuery = $modx->db->insert($dbTable, 'cargas' );
return true;
}
?>
cuarto: creamos un nuevo documento en nuestro modx en el cual tendremos las siguientes llamadas a snippets
[!agregarCargas!] [!eForm? &noemail=`true` &formid=`nuevaCarga` &eFormOnBeforeMailSent=`agregarCargas` &tpl=`nuevaCarga` &thankyou=`3`!]
estos cuatro pasos logran insertar información a mi tabla de ejemplo, claro está que no he validado los datos, ni he truncado la información de carácteres inválidos, pero lo escencial está funcionando y guarda la información a la tabla cargas
espero que este post sirva a la comunidad española y de habla inglesa (puesto que lo dejé traducido al inglés también en el foro de eForm2db)
francisco
www.dospuntocero.cl