Ergebnis 1 bis 14 von 14

Thema: Fatal error: Class 'EfgCallbacks' not found

  1. #1
    Contao-Nutzer Avatar von clauer
    Registriert seit
    18.12.2010.
    Ort
    Eisenberg / Pfalz
    Beiträge
    49

    Standard Fatal error: Class 'EfgCallbacks' not found

    Guten Tag,

    nach Absenden eines mit EFG erstellten Formulars erhalte ich die Fehlermeldung "Fatal error: Class 'EfgCallbacks' not found ...".

    In der /systems/config/dcaconfig.php ist folgendes definiert:

    PHP-Code:
    <?php

    // Put your custom configuration here

     
    $GLOBALS['TL_HOOKS']['processEfgFormData']['efg_callbacks_00'] = array('EfgCallbacks''getCheckBoxValues');
     
    $GLOBALS['TL_HOOKS']['processEfgFormData']['efg_callbacks_01'] = array('EfgCallbacks''checkConfirmationMail');

    ?>
    Die EfgCallbacks.php liegt im Verzeichnis /efg/classes. Sie ist wie folgt aufgebaut:

    PHP-Code:
    class EfgCallbacks extends Frontend
    {
        public function 
    getCheckBoxValues($arrSubmitted$arrFiles$intOldId, &$arrForm)
        {
            if (
    $arrSubmitted['FORM_SUBMIT'] == 'auto_form_1'// anzupassen, Wert siehe hidden-Input im Formular
            
    {
                
    // Prüfung des übermittelten Wertes der checkbox
                
    $strInformation '';
                
    $strMitglied '';
                if ( isset(
    $arrSubmitted['anforderung'] ) && ( $arrSubmitted['anforderung'] == 'information' )
                {
                    
    $strInformation 'Ich erbitte Informationen &uuml;ber den Verein Frauenw&uuml;rde e.V.';
                }
                if ( isset(
    $arrSubmitted['anforderung'] ) && ( $arrSubmitted['anforderung'] == 'mitglied' )
                {
                    
    $strInformation 'Ich m&ouml;chte Mitglied im Verein Frauenw&uuml;rde e.V. werden';
                }
                if ( 
    $strInformation == '' ) && ( $strAnforderung == '' )
                {
                    
    $arrSubmitted['anforderung'] = '';
                }
                if ( 
    $strInformation != '' ) && ( $strAnforderung != '' )
                {
                    
    $arrSubmitted['anforderung'] = 'Ich erbitte Informationen &uuml;ber den Verein Frauenw&uuml;rde e.V.\nIch m&ouml;chte Mitglied im Verein Frauenw&uuml;rde e.V. werden';
                }
                if ( 
    $strInformation != '' )
                {
                    
    $arrSubmitted['anforderung'] = 'Ich erbitte Informationen &uuml;ber den Verein Frauenw&uuml;rde e.V.'
                    
    }
                    else
                    {
                    
    'Ich m&ouml;chte Mitglied im Verein Frauenw&uuml;rde e.V. werden';
                }
             }

            return 
    $arrSubmitted;
     
        }
        
        public function 
    checkConfirmationMail($arrSubmitted$arrFiles$intOldId, &$arrForm)
        {
     
            
    // Einschraenkung auf das Formular
             
    if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_1'// anzupassen, Wert siehe hidden-Input im Formular
               
    {
                   
    // Prüfung des übermittelten Wertes der checkbox
                 
    if ( !isset($arrSubmitted['cc']) || $arrSubmitted['cc'] != 'cc' )
                {
                    
    // deaktivieren der Option 'Bestätigungs-Mail versenden'
                       
    $arrForm['sendConfirmationMail'] = false;
                }
               }
            return 
    $arrSubmitted;
     
        }
        

    Ich denke, das entspricht den Vorgaben aus der Dokumentation. Trotzdem habe ich folgende Fragen:

    1. In welchem Verzeichnis muss die EfgCallbacks.php liegen?

    2. Genügt es, die Hooks in der dcaconfig zu definieren oder muss ich sie in /efg/config/config.php zusätzlich (oder ausschließlich) definieren?

    3. Habe ich sonst etwas übersehen?

    Vielen Dank für jede Hilfe.
    Christian

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Am besten in einem eigenen Verzeichnis im /modules Verzeichnis. Dann bleibt das efg Verzeichnis updatesicher.

    [myCallbacks]
    - EfgCallbacks.php
    -- [config] config.php -> hier die Hooks definieren
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer Avatar von clauer
    Registriert seit
    18.12.2010.
    Ort
    Eisenberg / Pfalz
    Beiträge
    49

    Standard

    Herzlichen Dank für die rasche Antwort. Leider funktioniert es noch nicht:

    Code:
    Warning: in_array() expects parameter 2 to be array, null given in system/modules/core/library/Contao/System.php on line 110
    
    #0 [internal function]: __error(2, 'in_array() expe...', '/www/htdocs/w01...', 110, Array)
    #1 system/modules/core/library/Contao/System.php(110): in_array('getInstance', NULL)
    #2 system/modules/efg/classes/FormdataProcessor.php(163): Contao\System->import('EfgCallbacks')
    #3 system/modules/core/forms/Form.php(460): Efg\FormdataProcessor->processSubmittedData(Array, Array, Array, Array, Object(Efg\ExtendedForm))
    #4 system/modules/core/forms/Form.php(211): Contao\Form->processFormData(Array, Array)
    #5 system/modules/efg/forms/ExtendedForm.php(146): Contao\Form->compile()
    #6 system/modules/core/classes/Hybrid.php(210): Efg\ExtendedForm->compile()
    #7 system/modules/core/forms/Form.php(62): Contao\Hybrid->generate()
    #8 system/modules/core/library/Contao/Controller.php(462): Contao\Form->generate()
    #9 system/modules/core/modules/ModuleArticle.php(179): Contao\Controller->getContentElement(Object(Contao\ContentModel))
    #10 system/modules/core/modules/Module.php(148): Contao\ModuleArticle->compile()
    #11 system/modules/core/modules/ModuleArticle.php(59): Contao\Module->generate()
    #12 system/modules/core/library/Contao/Controller.php(390): Contao\ModuleArticle->generate(false)
    #13 system/modules/core/library/Contao/Controller.php(243): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #14 system/modules/core/pages/PageRegular.php(109): Contao\Controller->getFrontendModule('0', 'main')
    #15 index.php(250): Contao\PageRegular->generate(Object(Contao\PageModel))
    #16 index.php(411): Index->run()
    #17 {main}
    
    Fatal error: Class 'EfgCallbacks' not found in /www/htdocs/w010699b/de/fw/prod/cms/system/modules/core/library/Contao/System.php on line 110
    Egal wo ich die Hooks definiere, egal wo ich die EfgCallbacks.php speichere, ich komme nicht über diesen Fehler weg. Woran kann das liegen?

    Gruß
    Christian

  4. #4
    Contao-Nutzer Avatar von clauer
    Registriert seit
    18.12.2010.
    Ort
    Eisenberg / Pfalz
    Beiträge
    49

    Standard

    Ich werde den Fehler nicht los und würde mich über eine Hilfestellung freuen.
    Gruß
    Christian

  5. #5
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Welche Contao Version? Wenn das eine 3er ist, musst du die neue Klasse EfgCallbacks erst im AutoLoader registrieren! Diese wird ja ganz offensichtlich nicht gefunden.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  6. #6
    Contao-Nutzer Avatar von clauer
    Registriert seit
    18.12.2010.
    Ort
    Eisenberg / Pfalz
    Beiträge
    49

    Standard

    Hallo Tim,

    komme leider erst eben dazu, den Fehler weiter zu verfolgen. Irgendwie stehe ich im Wald. Folgendes habe ich nach Deinem Hinweis (herzlichen Dank dafür!) korrigiert:

    Eintrag in der /efg/config/autoload.php (sollte die Klasse registrieren)
    PHP-Code:
    ClassLoader::addClasses(array
    (
    ... 
        
    // MyClasses
        
    'EfgMyCallbacks'          => 'system/modules/efg/myclasses/EfgMyCallbacks.php',
    ...; 
    Eintrag in der /efg/config/config.php (Sollte die Klassenmethoden (Hooks) bekannt machen)
    PHP-Code:
    /**
     * -------------------------------------------------------------------------
     * HOOKS
     * -------------------------------------------------------------------------
     */
    ...
    $GLOBALS['TL_HOOKS']['processEfgFormData']['efg_callbacks_00'] = array('EfgMyCallbacks''getCheckBoxValues');
    $GLOBALS['TL_HOOKS']['processEfgFormData']['efg_callbacks_01'] = array('EfgMyCallbacks''checkConfirmationMail');
    ... 
    Für die EfgMyCallbacks.php habe ich das Verzeichnis /efg/myclasses angelegt und die EfgMyCallbacks.php dort abgelegt. Die Datei hat folgend Inhalt (nur der Rahmen):
    PHP-Code:
    class EfgMyCallbacks extends Frontend
    {
        public function 
    getCheckBoxValues($arrSubmitted$arrFiles$intOldId, &$arrForm)
        {
        ...
        }
        public function 
    checkConfirmationMail($arrSubmitted$arrFiles$intOldId, &$arrForm)
        {
        ... 
        }
        

    Anstelle der Punkte steht der auszuführende Code.

    Wenn ich das Formular abschicke (http://test.frauenwuerde.de/kontakt.html) bekomme ich statt des Bestätigungsfensters den Inhalt der Klasse angezeigt sowie die Fehler
    - Warning: in_array() expects parameter 2 to be array, null given in system/modules/core/library/Contao/System.php on line 110
    und
    - Fatal error: Class 'EfgMyCallbacks' not found in /www/htdocs/w010699b/de/fw/test/cms/system/modules/core/library/Contao/System.php on line 110

    Was an diesem Konstrukt ist falsch (was die Fehlermeldungen besagen ist mir vordergründig schon klar aber was steckt dahinter?)?

    Gruß
    Christian

    [Edit]
    Der beschriebene Fehler wird jetzt wohl nicht mehr ausgegeben, die Methoden werden allerdings auch nicht ausgeführt.
    Geändert von clauer (15.07.2013 um 22:19 Uhr)

  7. #7
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Schau dir doch bei anderen Erweiterungen ab, wie es korrekt gemacht wird. Zum Beispiel meine formpdf
    Eintrag in der /efg/config/autoload.php (sollte die Klasse registrieren)
    Kein guter Weg! Ein eigenes neues Modul, mit eigener config.php, nutzen! Updatefähigkeit!
    Gilt auch für den Rest.

    Für die EfgMyCallbacks.php habe ich das Verzeichnis /efg/myclasses angelegt und die EfgMyCallbacks.php dort abgelegt. Die Datei hat folgend Inhalt (nur der Rahmen):
    Die Mühe mit einem extra Verzeichnis würde ich mir nicht machen. Ist auch nicht nötig, wenn du von vornherein deine Hooks als eigenständige Erweiterung in einem Verzeichnis im system/modules auslagern würdest.
    Hier wieder! Updatefähigkeit beibehalten. Bei jedem efg Update ist wahrscheinlich dein ganzes Verzeichnis gelöscht.

    Generell: Es ist zwar nicht zwingend notwendig, aber wenn man sich schon die Mühe macht korrekt für die 3er zuschreiben, dann sollte man die vorgegebene Ordnerstruktur wahren und auch korrekt in php Vererben. Schau mal in andere Erweiterungen, die direkt für die 3er sind.

    Von all dem mal abgesehen. Funktioniert der efg in einer 3er Version überhaupt?
    Geändert von Tim G (16.07.2013 um 07:35 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  8. #8
    Contao-Nutzer Avatar von clauer
    Registriert seit
    18.12.2010.
    Ort
    Eisenberg / Pfalz
    Beiträge
    49

    Standard

    Danke, Tim, für Deine klare und engagierte Aussage.

    Für eine ältere Contoa Installation (2.9?) habe ich etwas ähnliches gemacht, das funktionierte auch so und entsprach der Anleitung. Leider habe ich dieses Mal keine Anleitung gefunden und deswegen etwas im Nebel herumgestochert - so anspruchsvoll ist mein Ansinnen nicht, werde aber auf jeden Fall Deine Anregung "eigene Erweiterung" umsetzen, wollte mich mit dem Thema eigene Erweiterungen ohnehin für ein anderes Projekt beschäftigen.

    Laut Erweiterungskatalog ist efg für 3.0.3 bis 3.0.5 freigegeben, ich nutze 3.0.6, das sollte also nicht das Problem sein.

    efg läuft, der Fehler ist weg, nur die email ist eben nicht so aufbereitet wie ich das wollte.

    Gruß
    Christian

  9. #9
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    BIs auf die Sachen, die ich angemerkt hatte, sehe ich gerade auch keine Fehler.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  10. #10
    Contao-Nutzer
    Registriert seit
    30.07.2013.
    Beiträge
    4

    Standard

    ich komme hier auch nicht weiter...
    leider gibt es ja keine angepasste anleitung für Contao 3

    also ich versuche es so wie ihr auftubauen... bekomme aber eine Fehlermeldung

    Fatal error: Cannot redeclare class EfgCallbacks in /xxxxxxxxxxxxxxxxxxxxxx/system/modules/efg/modules/EfgCallbacks.php on line 49

    was bedeutet redeclare? hab ich die klasse schon vorher irgendwo definiert?!

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von grandman1701 Beitrag anzeigen
    ich komme hier auch nicht weiter...
    leider gibt es ja keine angepasste anleitung für Contao 3

    also ich versuche es so wie ihr auftubauen... bekomme aber eine Fehlermeldung

    Fatal error: Cannot redeclare class EfgCallbacks in /xxxxxxxxxxxxxxxxxxxxxx/system/modules/efg/modules/EfgCallbacks.php on line 49

    was bedeutet redeclare? hab ich die klasse schon vorher irgendwo definiert?!
    Hat sich einer von Euch mal mal die Dokus oder noch besser andere Erweiterungen angeguckt?
    Hier ist ein Mockup basierend auf Version 3.1.1. Keine 3min um schnell die Klassen und Ordner anzulegen und alles läuft.
    Angehängte Dateien Angehängte Dateien
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  12. #12
    Contao-Nutzer
    Registriert seit
    30.07.2013.
    Beiträge
    4

    Staunendes Gesicht

    Hi Tim,
    danke für das Mockup..

    eigentlich brauche ich sessionform für contao 3.1 aber das läuft ja nicht..

    mein code soll nur ein paar berechnungen machen und im frontend+email eine summe anzeigen

    PHP-Code:
    class EfgCallbacks extends \Backend
    {

        public function 
    exampleCalculate($arrSubmitted$arrFiles$intOldId, &$arrForm)
        {
     
            
    // Einschraenkung auf das Formular
            
    if ($arrSubmitted['FORM_SUBMIT'] == 'auto_kalkul')
            {
                
                
    // addieren von Werten mehrerer Formularfelder, Übertragen der Summe 
                
    $arrSubmitted['summenfeld'] = $arrSubmitted['AnzalhPlatten'] + $arrSubmitted['EinseitigAnzahl'] + $arrSubmitted['AnzahlSMDPads'];
                
            }

            return 
    $arrSubmitted;
     
        }
        

    und die meldung kann ja nur gutes heußen?!?!

    Fatal error: Uncaught exception Exception with message --- DER HOOK WIRD AUSGEFUEHRT --- thrown in system/modules/efgCallbacks/classes/MyEfgCallbacks.php on line 7
    Geändert von grandman1701 (30.07.2013 um 10:18 Uhr)

  13. #13
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    atal errorUncaught exception Exception with message --- DER HOOK WIRD AUSGEFUEHRT --- thrown in system/modules/efgCallbacks/classes/MyEfgCallbacks.php on line 7 
    Das hab ich Euch in die Biespiel-Klasse reingeschrieben, damit Ihr seht, dass der Hook ausgeführt wird! Den Aufbau anschauen, nachbauen, oder abändern.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  14. #14
    Contao-Nutzer
    Registriert seit
    30.07.2013.
    Beiträge
    4

    Standard

    Zitat Zitat von Tim G Beitrag anzeigen
    PHP-Code:
    atal errorUncaught exception Exception with message --- DER HOOK WIRD AUSGEFUEHRT --- thrown in system/modules/efgCallbacks/classes/MyEfgCallbacks.php on line 7 
    Das hab ich Euch in die Biespiel-Klasse reingeschrieben, damit Ihr seht, dass der Hook ausgeführt wird!

    DANKE..... tut was es soll...

    wie kann ich eingentlich im frontent sie Summe vor der Bestätigungsseite einblenden??
    momentan geht ja nur nach submit

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
  •