Hallo,
ich habe unter Contao 4.4.29 (PHP 7.2) zwei Formulare, beim einen werden Werte nach der Eingabe addiert, beim anderen subtrahiert. Die Berechnung wird mit dem Hook prepareFormData ausgeführt.
Wenn ich nur einen Hook (Add.php oder Sub.php) aktiviert habe funktioniert dieser problemlos. Wenn ich aber beide Hooks aktiv habe, gibt es Probleme. Jetzt möchte ich die einzelnen Hooks für das jeweilige Formular beschränken. Ich habe es mit folgenden Varianten probiert, aber beides funktioniert nicht:
Variante 1:
PHP-Code:
if ($arrSubmitted['formSubmit'] == 'auto_form_1')
// bzw.
if ($arrSubmitted['formSubmit'] == 'auto_form_2')
Variante 2 (siehe hier):
PHP-Code:
if ($arrForm['id'] == '1')
// bzw.
if ($arrForm['id'] == '2')
Ich bekomme folgende Fehlermeldung in var/logs:
Code:
[2018-11-27 21:29:29] app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Cannot use object of type Contao\\Form as array at /www/htdocs/xxxxxxxxxx/src/AppBundle/Add.php:14)"} []
Die Caches wurden jedes Mal gelöscht, aber das änderte nichts am Ergebnis.
Wie muss ich unter Contao 4 die Einschränkung auf das Formular vornehmen?
Danke für die Hilfe.
Hier noch die kompletten Inhalte von Add.php, Sub.php und der config.php.
PHP-Code:
<?php
namespace AppBundle;
use Contao\Input;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class Add extends AppBundle
{
public function Plus(&$arrSubmitted, $arrLabels, $objForm, $arrForm)
{
// Einschränkung auf das Formular
// if ($arrSubmitted['formSubmit'] == 'auto_form_1') ===> funktioniert nicht
if ($arrForm['id'] == '1') // funktioniert auch nicht
{
// Addieren von Werten aus dem Formular
}
}
}
PHP-Code:
<?php
namespace AppBundle;
use Contao\Input;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class Sub extends AppBundle
{
public function Minus(&$arrSubmitted, $arrLabels, $objForm, $arrForm)
{
// Einschränkung auf das Formular
// if ($arrSubmitted['formSubmit'] == 'auto_form_2') ===> funktioniert nicht
if ($arrForm['id'] == '2') // funktioniert auch nicht
{
// Subtrahieren von Werten aus dem Formular
}
}
}
PHP-Code:
<?php
$GLOBALS['TL_HOOKS']['prepareFormData'][] = array('AppBundle\Add', 'Plus');
$GLOBALS['TL_HOOKS']['prepareFormData'][] = array('AppBundle\Sub', 'Minus');
?>