Führe nochmal einaus. Poste ggf. die Konsolenausgabe, falls es zu einem Fehler kommt. Falls es zu keinem Fehler kommt, poste die Ausgabe vonCode:composer installCode:vendor/bin/contao-console debug:container processFormDataListener
Führe nochmal einaus. Poste ggf. die Konsolenausgabe, falls es zu einem Fehler kommt. Falls es zu keinem Fehler kommt, poste die Ausgabe vonCode:composer installCode:vendor/bin/contao-console debug:container processFormDataListener
Konsolenausgabe von CM, Installieren von Composer Abhöngigkeiten:
Code:Datenbank aktualisierenBestätigen & Schließen $ /opt/alt/php73/usr/bin/php -q /home/zukunfts/domains/zukunftsforum-rissen.de/public_html/main/web/contao-manager.phar.php composer install --prefer-dist --no-dev --no-progress --no-suggest --no-ansi --no-interaction --optimize-autoloader ocramius/package-versions: Generating version class... ocramius/package-versions: ...done generating version class contao/manager-plugin: Generating plugin class... contao/manager-plugin: ...done generating plugin class // ../src/EventListener/processFormDataListener.php // Aufruf: nach Absenden des Mitgliedsantragsformulars // Funktionen: // // 01. Test: setze Mitgliedsbeitra auf 80 // 02. namespace App\EventListener; use Contao\CoreBundle\ServiceAnnotation\Hook; use Contao\FrontendTemplate; use Contao\Module; use Terminal42\ServiceAnnotationBundle\ServiceAnnotationInterface; class processFormDataListener implements ServiceAnnotationInterface { /** * @Hook("processFormData", priority=-10) */ public function onProcessFormData(array $submittedData, array $formData, array $files, array $labels, Form $form ): void { dump($formData, $form); die(); // if ('Mitgliedsantrag-Test' === $form->formId) { // $submittedData['fee'] = '80'; // } if ($form->formId == 'Mitgliedsantrag-Test') { $submittedData['fee'] = '80'; } // if (23 === (int) $form->id) { // $submittedData['fee'] = '80'; // } } } Added the web/preview.php file. Added the web/index.php file. Added the web/app.php file. // Clearing the cache for the prod environment with debug // false [OK] Cache for the "prod" environment (debug=false) was successfully cleared. // Warming up the cache for the prod environment with debug // false [OK] Cache for the "prod" environment (debug=false) was successfully warmed. Trying to install assets as relative symbolic links. --- ----------------------------------------- ------------------ Bundle Method / Error --- ----------------------------------------- ------------------ ? ContaoCoreBundle relative symlink ? ContaoFaqBundle relative symlink ? ContaoNewsBundle relative symlink ? ContaoNewsletterBundle relative symlink ? DiscordierJustTextWidgetsBundle relative symlink ? ThemeHelperBundle relative symlink ? ContaoBootstrapCoreBundle relative symlink ? ContaoBootstrapGridBundle relative symlink ? ContaoDDAdvancedClassesBundle relative symlink ? MateThemeBundle relative symlink ? ContaoCalendarBundle relative symlink ? ContaoCommentsBundle relative symlink ? MultiColumnWizardBundle relative symlink ? MetaModelsCoreBundle relative symlink ? MetaModelsFilterCheckboxBundle relative symlink ? MetaModelsFilterFromToBundle relative symlink ? MetaModelsFilterRangeBundle relative symlink ? MetaModelsFilterSelectBundle relative symlink ? MetaModelsFilterTagsBundle relative symlink ? MetaModelsFilterTextBundle relative symlink ? CcaDcGeneralBundle relative symlink ? MetaModelsAttributeAliasBundle relative symlink ? MetaModelsAttributeCheckboxBundle relative symlink ? MetaModelsAttributeCombinedValuesBundle relative symlink ? MetaModelsAttributeDecimalBundle relative symlink ? MetaModelsAttributeFileBundle relative symlink ? MetaModelsAttributeLongtextBundle relative symlink ? MetaModelsAttributeNumericBundle relative symlink ? MetaModelsAttributeSelectBundle relative symlink ? MetaModelsAttributeTableTextBundle relative symlink ? MetaModelsAttributeTagsBundle relative symlink ? MetaModelsAttributeTextBundle relative symlink ? MetaModelsAttributeTimestampBundle relative symlink ? MetaModelsAttributeUrlBundle relative symlink --- ----------------------------------------- ------------------ [OK] All assets were successfully installed. --- ----------------------------------------------------- ---------------------------------------------------------------- Symlink Target / Error --- ----------------------------------------------------- ---------------------------------------------------------------- ! web/files/img/Bilder Wohnen Skipped because files/img will be symlinked. ! web/files/img/Bilder Energie Skipped because files/img will be symlinked. ? web/files/verein files/verein ? web/files/img files/img ? web/files/themes files/themes ? web/files/css files/css ? web/files/mate files/mate ? web/files/texte/Texte Energie files/texte/Texte Energie ? web/files/intern/protokolle files/intern/protokolle ? web/files/texte/Texte Verein files/texte/Texte Verein ? web/files/texte/Texte Wohnen files/texte/Texte Wohnen ? web/files/texte/Texte Mobilität files/texte/Texte Mobilität ? web/files/texte/Texte Ernährung files/texte/Texte Ernährung ? web/files/intern/Design/Logo files/intern/Design/Logo ? web/files/texte/Texte Netzwerk/Aktionen files/texte/Texte Netzwerk/Aktionen ? web/files/texte/Texte Netzwerk/Klimakatastrophe files/texte/Texte Netzwerk/Klimakatastrophe ? web/files/texte/Texte Netzwerk/Stadtteilinitiativen files/texte/Texte Netzwerk/Stadtteilinitiativen ? web/system/modules/cookiebar/assets system/modules/cookiebar/assets ? web/system/modules/haste/assets system/modules/haste/assets ? web/system/modules/dcawizard/assets system/modules/dcawizard/assets ? web/system/modules/notification_center/assets system/modules/notification_center/assets ? web/system/modules/conditionalformfields/assets system/modules/conditionalformfields/assets ? web/system/modules/leads/assets system/modules/leads/assets ? web/system/modules/contao_academy_client/assets system/modules/contao_academy_client/assets ? system/themes/flexible vendor/contao/core-bundle/src/Resources/contao/themes/flexible ? web/assets assets ? web/system/themes system/themes ? system/logs var/logs --- ----------------------------------------------------- ---------------------------------------------------------------- Done! Please open the Contao install tool or run contao:migrate on the command line to make sure the database is up-to-date. Loading composer repositories with package information Installing dependencies from lock file Nothing to install or update Package zendframework/zend-code is abandoned, you should avoid using it. Use laminas/laminas-code instead. Generating optimized autoload files > Contao\ManagerBundle\Composer\ScriptHandler::initializeApplication # Process terminated with exit code 0 # Result: OK --- ### Prozess erfolgreich abgeschlossen ###
Du hastin deiner PHP Datei vergessenCode:<?php
nö - echt!?!
Geändert von zonky (13.05.2020 um 21:02 Uhr)
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Code:[zukunfts@webspace bin]$ contao-console debug:container processFormDataListener -bash: contao-console: Kommando nicht gefunden. [zukunfts@webspace bin]$ ./contao-console debug:container processFormDataListener // ../src/EventListener/processFormDataListener.php // Aufruf: nach Absenden des Mitgliedsantragsformulars // Funktionen: // // 01. Test: setze Mitgliedsbeitra auf 80 // 02. namespace App\EventListener; use Contao\CoreBundle\ServiceAnnotation\Hook; use Contao\FrontendTemplate; use Contao\Module; use Terminal42\ServiceAnnotationBundle\ServiceAnnotationInterface; class processFormDataListener implements ServiceAnnotationInterface { /** * @Hook("processFormData", priority=-10) */ public function onProcessFormData(array $submittedData, array $formData, array $files, array $labels, Form $form ): void { dump($formData, $form); die(); // if ('Mitgliedsantrag-Test' === $form->formId) { // $submittedData['fee'] = '80'; // } if ($form->formId == 'Mitgliedsantrag-Test') { $submittedData['fee'] = '80'; } // if (23 === (int) $form->id) { // $submittedData['fee'] = '80'; // } } } 20:58:24 ERROR [console] Error thrown while running command "debug:container processFormDataListener". Message: "No services found that match "processFormDataListener"." ["exception" => Symfony\Component\Console\Exception\InvalidArgumentException^ { …},"command" => "debug:container processFormDataListener","message" => "No services found that match "processFormDataListener"."] No services found that match "processFormDataListener". debug:container [--show-private] [--show-arguments] [--show-hidden] [--tag TAG] [--tags] [--parameter PARAMETER] [--parameters] [--types] [--env-var ENV-VAR] [--env-vars] [--format FORMAT] [--raw] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--] <command> [<name>]
Das kostet mindestens ne Runde...
Jetzt zieht das script. Weiter geht's.
Vielen vielen Dank, hat mir und euch auch unnötig Zeit gekostet.
prima - mit dem dump solltest Du sehen, was ankommt... nun kannst Du die Bearbeitung auf das relevante Formular begrenzen und dann die Daten separieren/anpassen/speichern... zur Sicherheit kannst Du die Daten per Leads nochmal abspeichern
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
PS: spannende Frage wäre, ob die composer.json vom CM automatisch umgeschrieben wird oder nicht...
MetaModels-Workshop: ... wo sich die nächste Gelegenheit bietet... oder Extern oder Online
Erweiterungen: Infos im Seitenbaum, Formular-Default für Select/Checkbox/Radio (SCR), Formular-Newsletteranmeldung, Regex-Formularwidget, Lizenzmanager für Isotope
Unterstützung per Github-Sponsoring: MetaModels Handbuch und Forum, e-spin Erweiterungen
Es gibt doch noch ein Problem das nach falschem namespace aussieht:
Bildschirmfoto von 2020-05-13 21-14-19.png
Habe die composer.json auf den alten Inhalt gebracht, also ohne das
Dann CM cache ersetzen -> keine AuswirkungCode:"autoload": { "psr-4": { "App\\": "src/" } }
Dann CM Composer Class loader -> keine Auswirkung, obwohl die Datei angeschaut wird (hatte ein Komma zuviel stehen lassen, das wurde bemerkt)
Dann CM Abhöngikeiten istallieren -> keine Auswirkung
Die vom Hook gerufene Methode wird auch ohne den Eintrag in der composer.json ausgeführt. Lasse ihn daher jetzt weg.
Ausserdem stimmt noch eines nicht:
Trotz des Hooks wird ein insert auf die tl_member gemacht, das soll aber doch unterbunden werden. Oder lässt es sich nicht unterbinden?
Ich könnte ja in der Form den Haken bei "Eingaben speichern in Zieltabelle" fortlassen ...
... und dann in der Methode händisch speichern (UPDATE tl_member SET 'fee' = $submittedData->fee, ...
WHERE 'id' == $submittedData->id ; ) oder so ähnlich.
Sorry, ich hab im falschen thread geschrieben. Ich will wie gesagt das Formular verwenden, um ein Member upzudaten.
Auch sorry, das kommt daher, dass ich von 2 verschiedenen Beispielen kopiert habe. Das Beispiel direkt zu processFormData habe ich nicht kopiert, weil ich zuerst dachte, es sei lediglich die Deklaration des Hooks und nicht bereits meine Lösung. Deshalb habe ich an anderer Stelle gesucht, wie man Hooks nutzt und dann eben ein anderes Beispiel kopiert und abgeändert.
Jetzt ist mir vieles klarer, ich muss aber auch sagen, dass das Entwicklerhandbuch alleine jedenfalls für mich eine große Hürde ist. Gut fände ich, wenn es einen "Waschzettel" gäbe: Wie nutze ich einen Hook, um den Prozeß, der durch das Absenden eines Formulars angestoßen wird, zu beeinflussen. Oder ein Videokurs der contao-academy dazu - das wäre großartig.
Wenn gewünscht, schreibe ich gerne mal die Schritte auf, die ich gemacht habe, um eine Mitgliederänderung per Formular zu ermöglichen.
Danke für eure bisherige prima Unterstützung.
Hier habe ich dir den storeFormData Hook empfohlen.
Verwende jetzt den Hook storeFormData.
Kann es sein, dass der Code im Handbuch nicht mehr passt?
Folgende Abfrage
schlägt zu, es gibt die Spalte "member" in der Tat nicht in tl_member.Code:if (!$this->columnExistsInTable('member', $form->targetTable)) {
Ich erinnere, dass es Ende letzten Jahres Probleme gab wegen eben dieser Spalte, weil MySql den Namen plötzlich reserviert hatte... Ich vermute, dass Contao darauf damit reagiert hat, die Spalte umzubennen, vielleicht in "id"???
Warum brauchst du diese Abfrage?
na, die ist in dem Beispiel im handbuch.
Man braucht sie nicht zwingend natürlich, jedoch sind die Anweisungen
(Init.)Code:$data['member'] = 0;
und
zwingendCode:$data['member'] = $user->id;
Du hattest mit den Hook empfohlen.
Es geht um den Update, statt regulär Insert von Formulardaten in tl_member
Ja, natürlich, weil du hier eine Anforderung gepostet hast, die zu diesem Hook passen. Aber das Beispiel in der Dokumentation ist ja höchstwahrscheinlich nicht das, was du machen möchtest. Du musst deine eigene Logik in diesem Hook implementieren. Und vielleicht solltest du auch lieber in den richtigen Threads posten, damit man überhaupt weiß, was du machen willst.
BITTE NICHT MEHR IN DIESEM THREAD ANTWORTEN.
Habe hier weitergemacht. Wo's hingehört
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)