Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: Hook processFormData und fehlendes use statement

  1. #1
    Contao-Fan
    Registriert seit
    10.01.2010.
    Ort
    Kiel
    Beiträge
    339

    Standard Hook processFormData und fehlendes use statement

    Hallo,

    beim Verwenden des processFormData Hook, bekomme ich folgende Fehlermeldung im Log:
    Code:
    app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ClassNotFoundException(code: 0): Attempted to load class \"FormExtended\" from the global namespace.\nDid you forget a \"use\" statement? at /Applications/MAMP/htdocs/intranet.h-groupnet.com/vendor/contao/core-bundle/src/Resources/contao/library/Contao/System.php:171)"} []
    Ich habe schon diverse use statements ausprobiert:
    PHP-Code:
    <?php

    namespace Mgnt\MyBundle;

    use 
    Contao\Form;
    use 
    Contao\Widget;
    use 
    Contao\Database;
    use 
    Contao\Input;
    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;
    use 
    Patchwork\Utf8;

    class 
    FormExtended
    {
        public function 
    myProcessFormData($arrPost$arrForm$arrFiles)
        {
            echo 
    'Test';
            exit;
        }
    }
    Meine config.php:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('FormExtended''myProcessFormData'); 
    Ich verwende Contao 4.4 und der Hook ist Bestandteil einer eigenen Erweiterung, die im Order „src“ liegt.
    Hat jemand eine Idee?

    Gruß
    Tina

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Deine Klasse FormExtended liegt im Namespace Mgnt\MyBundle. Daher musst du den Hook auch dementsprechend konfigurieren:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['processFormData'][] = [\Mgnt\MyBundle\FormExtended::class, 'myProcessFormData']; 

  3. #3
    Contao-Fan
    Registriert seit
    10.01.2010.
    Ort
    Kiel
    Beiträge
    339

    Standard

    Ach ja, klar... den Wald vor lauter Bäumen nicht gesehen. Danke!

  4. #4
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Gesicht zeigt die Zunge Gleiches Problem

    Zitat Zitat von Tina Beitrag anzeigen
    Ach ja, klar... den Wald vor lauter Bäumen nicht gesehen. Danke!
    Sorry, ich sehe den Wald trotz dieses Posts immer noch nicht ;-(

    Ich möchte auch per processFormData-Hook ein paar Änderungen an den Formulardaten vornehmen.

    Das Ganze läuft unter Contao 4.7.

    Die folgenden beiden Dateien habe ich angelegt in //system/modules

    //system/modules/myFormHooks/config/config.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_HOOKS']['processFormData'][] = array('mySendFormClass''mySendForm');
    ?>
    //system/modules/myFormHooks/mySendFormClass.php
    PHP-Code:
    <?php
    class mySendFormClass extends Frontend
    {
        public function 
    mySendForm($arrPost$arrForm$arrFiles)
        {
            echo 
    "<div>mySendFormClass/mySendForm()</div>";
            
    $ok file_put_contents("mySendForm.log","\narrForm = " print_r($arrFormtrue),FILE_APPEND);
        }
    // end    function mySendForm()
    }// end class mySendFormClass
    ?>
    Das war schon alles.

    Leider bekomme ich im Log-File auch die Meldung mit dem "use" statement.

    HTML-Code:
    [2019-08-14 14:13:28] request.
    CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException:
    "Attempted to load class "mySendFormClass" from the global namespace.
    Did you forget a "use" statement?" at C:\xampp\htdocs\cto4cm\vendor\contao\core-bundle\src\Resources\contao\library\Contao\System.php line 182
    In Contao 3 hatte ich diesen Hook schon öfter eingesetzt, gab dort keinerlei Probleme.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.896
    Partner-ID
    10107

    Standard

    Hast du deine Klasse auch überhaupt geladen?

  6. #6
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hast du deine Klasse auch überhaupt geladen?
    Oooooh ja, sorry ... Wald ... Bäume ;-)) Danke!!!


    Für alle, die es vielleicht auch noch interessiert, hier noch einmal vollständig und korrekt.

    //system/modules/myFormHooks/config/config.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_HOOKS']['processFormData'][] = array('mySendFormClass''mySendForm');
    ?>
    //system/modules/myFormHooks/mySendFormClass.php
    PHP-Code:
    <?php
    namespace Contao;

    class 
    mySendFormClass extends \Frontend
    {
        public function 
    mySendForm($arrPost$arrForm$arrFiles)
        {
            echo 
    "<div>mySendFormClass/mySendForm()</div>";
            
    $ok file_put_contents("mySendForm.log","\narrForm = " print_r($arrFormtrue),FILE_APPEND);
        }
    // end    function mySendForm()
    }// end class mySendFormClass
    ?>
    //system/modules/myFormHooks/config/autoload.php
    PHP-Code:
    ClassLoader::addClasses(array
    (
        
    // Classes
        
    'Contao\mySendFormClass' => 'system/modules/myFormHooks/mySendFormClass.php',
    )); 

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •