Hallo,
das Ganze funktioniert bei mir unter Contao 3.2.9 nicht. Ich bin wie folgt vorgegangen:
1) Im Formular habe ich drei Checkboxen angelegt, im Wert jeweils die zu addierenden Werte. Der jeweilige Wert soll nur zur Berechnung herangezogen werden, wenn die Checkbox auch abgehakt ist.
(Screenshot: checkbox-konfiguration.JPG)
2) Die Datei "EfgCallbacks.php" erstellt und in .../system/modules/efg abgelegt. Die Datei "EfgCallbacks.php" hat folgenden Inhalt:
PHP-Code:
<?php
// $arrSubmitted enthalt die POST-Werte
// $arrFiles ggf. Datei-Uploads
// $intOldId die ID des bearbeiteten Datensatzes, im Falle von Frontend-Bearbeitung
// $arrForm enthaelt die 'Formular-Konfiguration'
class EfgCallbacks extends Backend
{
public function Calculate($arrSubmitted, $arrFiles, $intOldId, &$arrForm)
{
// Einschraenkung auf das Formular
if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_2')
{
// addieren von Werten mehrerer Formularfelder, Übertragen der Summe
$arrSubmitted['gesamtsumme'] = $arrSubmitted['feldname1'] + $arrSubmitted['feldname2'] + $arrSubmitted['feldname3'];
}
return $arrSubmitted;
}
}
?>
3) In der datei "dcaconfig.php" wurde der folgende Eintrag hinzugefügt:
Code:
$GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01'] = array('EfgCallbacks', 'Calculate');
==> Nach dem versenden des Formulars endet das Ganze mit einem weißen Screen und folgender Fehlermeldung in der error.log:
Code:
[21-May-2014 16:13:19 Europe/Berlin]
PHP Warning: in_array() expects parameter 2 to be array, null given in /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/System.php on line 110
#0 [internal function]: __error(2, 'in_array() expe...', '/is/htdocs/wp10...', 110, Array)
#1 /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/System.php(110): in_array('getInstance', NULL)
#2 /is/htdocs/pfad/zu/contao/system/modules/efg/classes/FormdataProcessor.php(163): Contao\System->import('EfgCallbacks')
#3 /is/htdocs/pfad/zu/contao/system/modules/core/forms/Form.php(484): Efg\FormdataProcessor->processSubmittedData(Array, Array, Array, Array, Object(Efg\ExtendedForm))
#4 /is/htdocs/pfad/zu/contao/system/modules/core/forms/Form.php(225): Contao\Form->processFormData(Array, Array)
#5 /is/htdocs/pfad/zu/contao/system/modules/efg/forms/ExtendedForm.php(149): Contao\Form->compile()
#6 /is/htdocs/pfad/zu/contao/system/modules/core/classes/Hybrid.php(218): Efg\ExtendedForm->compile()
#7 /is/htdocs/pfad/zu/contao/system/modules/core/forms/Form.php(56): Contao\Hybrid->generate()
#8 /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/Controller.php(456): Contao\Form->generate()
#9 /is/htdocs/pfad/zu/contao/system/modules/core/modules/ModuleArticle.php(205): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
#10 /is/htdocs/pfad/zu/contao/system/modules/core/modules/Module.php(148): Contao\ModuleArticle->compile()
#11 /is/htdocs/pfad/zu/contao/system/modules/core/modules/ModuleArticle.php(59): Contao\Module->generate()
#12 /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/Controller.php(392): Contao\ModuleArticle->generate(false)
#13 /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/Controller.php(254): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
#14 /is/htdocs/pfad/zu/contao/system/modules/core/pages/PageRegular.php(138): Contao\Controller->getFrontendModule('0', 'main')
#15 /is/htdocs/pfad/zu/contao/index.php(256): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#16 /is/htdocs/pfad/zu/contao/index.php(440): Index->run()
#17 {main}
[21-May-2014 16:13:19 Europe/Berlin] PHP Fatal error: Class 'EfgCallbacks' not found in /is/htdocs/pfad/zu/contao/system/modules/core/library/Contao/System.php on line 110
Muss ich die Datei "EfgCallbacks.php" bei Contao 3.2.9 in einem anderen Pfad ablegen
(derzeit .../system/modules/efg)?
Oder habe ich an einer anderen Stelle einen Fehler eingebaut?
Danke für die Hilfe.
Schmidty
Lesezeichen