Hallo webstar,
ok, danke für die Erläuterungen.
Das die Überlagerung von Core-Klassen generell nicht mehr vorgesehen ist, ist natürlich ein ganz schöner Klopper.
Reichen denn die hooks nicht aus?
In diesem Fall leider nein, weil ich an "$this->recipient" ran muss und wenn ich das richtig sehe könnte ich in einer Hook Klasse auf diesen Wert nicht zugreifen. Oder habe ich was übersehen?
Da die Form Klasse ja als hybrid für Module und CEs genutzt wird, solltest du deine Formularklasse über die globals registrieren können und somit die Klasse ersetzen wenn wirklich benötigt.
Ich habe dann versucht über eine "config/config.php" und dort den Eintrag
PHP-Code:
$GLOBALS['FE_MOD']['application']['form'] = '\Fw2\Form';
meine Klasse zu aktivieren. Das hat aber leider auch nicht funktioniert.
Was aber - sehr zu meiner Überraschung - funktioniert hat:
Ich habe doch wieder eine "config/autoload.php" angelegt und dort folgende Anweisung hinterlegt:
PHP-Code:
<?php
/**
* Register the namespace
*/
ClassLoader::addNamespace('Fw2');
/**
* Register the classes
*/
ClassLoader::addClasses(array
(
// Classes
'Fw2\Form' => 'vendor/feldwaldwiese/fw2-form/src/Resources/contao/forms/Form.php',
));
Damit wird dann meine angepasste Klasse beim Verschicken eines Formulars berücksichtigt, auch ohne ein Symlink in "system/modules".
Ich verstehe aber nicht so richtig warum: Mein Verständnis war, dass wenn eine Erweiterung als Bundle in einer Contao 4 Struktur vorliegt (also mit Pfaden wie "src/Resources/contao/", dass dann "autoload.php" Dateien gar nicht berücksichtigt werden.
Viele Grüße
Arno
Lesezeichen