Hallo zusammen,
ich programmiere eine Komponente. In Backend werden Daten eingetragen. Im FrontEnd (noch nicht programmiert) sollen die Daten dann auf eine spezielle Weise angezeigt werden. Änderungen sind nur im Backend möglich.
Im Backend habe ich mir also ein eigenes Formular-Element erstellt. Das stellt die 7 Wochentage dar, und hakt die an, die im Datensatz hinterlegt sind.
Im Datensatz in der DB sind die auf die Weise "Mo,Do,Fr" hinterlegt.
Beim Einlesen mache ich daraus ein Array (mit explode(",") ). Das stelle ich dann entsprechend dar. Alles bis hier hin kein Problem.
Beim Speichern der Werte (also beim Abschicken des Formulars) muss ich die übertragenen Werte ja wieder in das Format für die Datenbank bringen (also komma-separieren).
Ich finde einfach keine Informationen, wie ich das nun bewerkstellige.
Ich habe es so weit geschafft, dass einzelnen Checkboxen mit dem Status ("on" oder <leer>) im $this->input->get('jForm',array(),'ARRAY') auftauchen.
Doch wie schaffe ich es, die einzelnen Checkboxen, die auf "on" stehen, zu verbinden (PHP-Funktion implode() ) und den Rest in die Datenbank zu bekommen? Welche Funktion(en) muss ich dafür überschreiben?
Ich benutze JModelAdmin, JFormFieldList und JControllerForm. Die einzelnen Checkboxen heißen "chk_Mo" bis "chk_So".
Hier ein Code-Schnippsel von mir. Ich wollte jetzt nicht *alles* posten, das würde erstmal den Rahmen sprengen:
class AppointmentsControllerAppointment extends JControllerForm
{
function save($key = NULL, $urlVar = NULL)
{
$formdata = JFactory::getApplication()->input->get('jForm','','ARRAY');
$chk=array();
if($this->input->getString('chk_Mo'))
$chk[]="Mo";
if($this->input->getString('chk_Di'))
$chk[]="Di";
if($this->input->getString('chk_Mi'))
$chk[]="Mi";
if($this->input->getString('chk_Do'))
$chk[]="Do";
if($this->input->getString('chk_Fr'))
$chk[]="Fr";
if($this->input->getString('chk_Sa'))
$chk[]="Sa";
if($this->input->getString('chk_So'))
$chk[]="So";
$chk = implode($chk, ",");
$key = $formdata->get('id',0);
parent::save($key,$urlVar);
}
}
Alles anzeigen
Ich hoffe auf eure Tips und Lösungsvorschläge.
Viele Grüße,
xola