Zend Form Field Mapping Um DB Spalten
-
05-07-2019 - |
Frage
Ich habe eine Zend_Form
$form = new My_Form();
$uploadedData = $form->getValues();
Zend_Debug::dump($uploadedData, $form->name,true)
und wenn ich die Form Werte Dump i erhalten ein String-Array
array(11) {
["event"] => string(2) "26"
["firstname"] => string(3) "sdf"
["surname"] => string(0) ""
["gender"] => string(1) "M"
["company"] => NULL
["dateOfBirth"] => string(10) "11-11-1977"
["address"] => string(6) "dfasdf"
["address2"] => string(4) "adfs"
["address3"] => string(4) "adfs"
["email"] => string(7) "x@x.com"
["mobile"] => string(0) ""
}
Die Form hat die gleiche Anzahl von Feldern, wie meine DB-Tabelle, die DB-Tabelle def ist
DROP TABLE IF EXISTS `registration`;
CREATE TABLE IF NOT EXISTS `registration` (
`id` int(11) NOT NULL auto_increment,
`event` int(11) NOT NULL,
`firstname` varchar(50) NOT NULL,
`surname` varchar(50) NOT NULL,
`gender` varchar(5) NOT NULL,
`dateofbirth` date NOT NULL,
`address` varchar(50),
`address2` varchar(50),
`address3` varchar(50),
`email` varchar(50) NOT NULL,
`mobile` varchar(50),
`company` int(11),
`sector` int(11),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Ich bin immer zur Zeit ein Mapping-Fehler, da die DB Ereignisspalte eine Zeichenfolge nicht nehmen kann, und gleiche mit der 'dateOfBirth' Spalte
if($form->isValid($formData))
{
$logger->info("valid form");
$table = new Model_DbTable_Registration();
... // apply some custom mapping??
$table->insert($uploadedData);
...
}
Ich möchte ein neues Array nicht müssen manuell erstellen, und jedes Formularfeld mit Namen auf den richtigen Typ der Karte - es scheint wie ein Schmerz. Gibt es einen intelligenten Weg, um diese Zuordnung in Zend zu tun?
Lösung
Aus diesem Grund auf der neuen ZF-Version ist das DataMapper Muster für Dinge wie diese verwenden, können Sie abstrakt vollständig wie zu setzen, speichern und die Daten abgerufen werden.
Am besten ist es, eine neue Klasse zu erstellen und dann mit dieser Klasse interagieren, und intern mit Ihrer DbTable Klasse, die Klasse in Wechselwirkung treten.