Ergebnis 1 bis 6 von 6

Thema: Contao 4.13 - Events lassen sich nicht mehr speichern / anlegen

  1. #1
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard Contao 4.13 - Events lassen sich nicht mehr speichern / anlegen

    Hallo,

    ich bekommen nach einem Update auf C 4.13 beim Speichern/Anlegen von Events folgende Fehlermeldung:

    PHP-Code:
    [2022-11-10T14:35:32.914177+01:00request.CRITICALUncaught PHP Exception Symfony\Component\ErrorHandler\Error\UndefinedMethodError"Attempted to call an undefined method named "storeFileMetaInformation" of class "tl_calendar_events"." at vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php line 3251 {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\UndefinedMethodError(code: 0): Attempted to call an undefined method named \"storeFileMetaInformation\" of class \"tl_calendar_events\". at vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php:3251)"} [] 
    Weiss jemand was damit anzufangen?

    Danke schonmal


    Thomas

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

    Standard

    Nutze den Debug-Modus und poste den Stack Trace. Poste außerdem welche Contao Version du genau hast.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Das ist ein Contao 4.13. - es wurde ein Update von Contao 3.5 gemacht.
    Möglicherweise gibt es eine damalige Erweiterung nicht mehr, aber

    storeFileMetaInformation war wohl damals noch im Calendar-Module noch als Methode drin.
    Daher ist in einem Modul ein neues Feld angelegt worden für einen Event:

    PHP-Code:

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['fields']['headerImageSRC'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar_events']['headerImageSRC'],
                
    'exclude'                 => true,
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('filesOnly'=>true'extensions'=>Config::get('validImageTypes'), 'fieldType'=>'radio''mandatory'=>true),
                
    'save_callback' => array
                (
                    array(
    'tl_calendar_events''storeFileMetaInformation')
                ),
                
    'sql'                     => "binary(16) NULL"
            
    ); 

    der Stack Trace sagt:


    HTML-Code:
    Symfony\Component\ErrorHandler\Error\UndefinedMethodError:
    Attempted to call an undefined method named "storeFileMetaInformation" of class "tl_calendar_events".
    
      at vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php:3251
      at Contao\DC_Table->save(')??????.?')
         (vendor/contao/core-bundle/src/Resources/contao/classes/DataContainer.php:516)
      at Contao\DataContainer->row('{title_legend},title,featured,alias,author;{cat_legend:hide},categories;{date_legend},showOnFreeDay,addTime,[addTime],ignoreEndTime,startTime,endTime,[EOF],startDate,endDate,hideOnWeekend;{source_legend:hide},source;{meta_legend},pageTitle,robots,description,serpPreview;{details_legend},location,address,teaser;{tourDetails_legend},treffpunkt,treffpunktLink,preis_n,preis_e,ticketOptions,regiondo,gruppeninfo;{image_legend},addImage;{headerImage_legend},addHeaderImage,[addHeaderImage],headerImageSRC,[EOF];{location_legend},location_name,location_str,location_plz,location_ort;{contact_legend},location_link,location_contact,location_mail;{regform_legend},useRegistration;{recurring_legend},recurring,[recurring],hideOnWeekend,repeatEach,recurrences,repeatWeekday,repeatEnd,[EOF];{recurring_legend_ext},recurringExt;{repeatFixedDates_legend},repeatFixedDates;{exception_legend},useExceptions,[useExceptions],repeatExceptionsInt,repeatExceptionsPer,repeatExceptions,[EOF];{enclosure_legend:hide},addEnclosure;{expert_legend:hide},cssClass,noComments;{publish_legend},published,start,stop')
         (vendor/contao/core-bundle/src/Resources/contao/drivers/DC_Table.php:1973)
      at Contao\DC_Table->edit()
         (vendor/contao/core-bundle/src/Resources/contao/classes/Backend.php:667)
      at Contao\Backend->getBackendModule('calendar', null)
         (vendor/contao/core-bundle/src/Resources/contao/controllers/BackendMain.php:168)
      at Contao\BackendMain->run()
         (vendor/contao/core-bundle/src/Controller/BackendController.php:49)
      at Contao\CoreBundle\Controller\BackendController->mainAction()
         (vendor/symfony/http-kernel/HttpKernel.php:163)
      at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
         (vendor/symfony/http-kernel/HttpKernel.php:75)
      at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
         (vendor/symfony/http-kernel/Kernel.php:202)
      at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
         (public/index.php:44)  
    die Frage ist: wenn ich das 'save_callback' beim eigenen Feld rausnehme, funktioniert dann das Speichern / Anlegen eines Events noch?


    Danke

    Thomas

  4. #4
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    hab jetzt im eigenen Modul - wo wie bei der Contao 3.5 Version in die tl_calender_events.php geschrieben:

    PHP-Code:

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['fields']['headerImageSRC'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar_events']['headerImageSRC'],
                
    'exclude'                 => true,
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('filesOnly'=>true'extensions'=>Config::get('validImageTypes'), 'fieldType'=>'radio''mandatory'=>true),
                
    'save_callback' => array
                (
                    array(
    'tl_calendar_events''storeFileMetaInformation')
                ),
                
    'sql'                     => "binary(16) NULL"
            
    );

    class 
    tl_calendar_events extends Backend
    {
        public function 
    storeFileMetaInformation($varValueDataContainer $dc)
        {
            if (
    $dc->activeRecord->singleSRC != $varValue)
            {
                
    $this->addFileMetaInformationToRequest($varValue'tl_calendar'$dc->activeRecord->pid);
            }

            return 
    $varValue;
        }


    Da sagt mir der Stack Trace:

    Compile Error: Cannot declare class tl_calendar_events, because the name is already in use

    Offenbar geht das so nicht mehr?


    THomas

  5. #5
    Contao-Nutzer
    Registriert seit
    20.01.2022.
    Beiträge
    205

    Standard

    Weiterhin habe ich im eigenen Modul unter:

    system/modules/z_events/modules

    eine eigene ModuleEventReader.php liegen, die unter Contao 3.5. dann anstatt der eigentlichen ModuleEventReader.php aus dem Modul tl_calender_extended verwendet wurde.

    Nun aber wird beim EventReader die
    calendar-extended-bundle/src/Resources/contao/modules/ModuleEventReader.php
    verwendet - und nicht die, aus meinen eigenen Modul.

    Ist da hier offenbar auch was neu?


    Thomas

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

    Standard

    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    Das ist ein Contao 4.13. - es wurde ein Update von Contao 3.5 gemacht.
    Möglicherweise gibt es eine damalige Erweiterung nicht mehr, aber

    storeFileMetaInformation war wohl damals noch im Calendar-Module noch als Methode drin.
    Daher ist in einem Modul ein neues Feld angelegt worden für einen Event:

    PHP-Code:

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['fields']['headerImageSRC'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar_events']['headerImageSRC'],
                
    'exclude'                 => true,
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('filesOnly'=>true'extensions'=>Config::get('validImageTypes'), 'fieldType'=>'radio''mandatory'=>true),
                
    'save_callback' => array
                (
                    array(
    'tl_calendar_events''storeFileMetaInformation')
                ),
                
    'sql'                     => "binary(16) NULL"
            
    ); 

    der Stack Trace sagt:


    die Frage ist: wenn ich das 'save_callback' beim eigenen Feld rausnehme, funktioniert dann das Speichern / Anlegen eines Events noch?


    Danke

    Thomas
    Die Methode storeFileMetaInformation gibt es in der tl_calendar_events Klasse nicht (mehr).





    Zitat Zitat von Thomas Pyrin Beitrag anzeigen
    hab jetzt im eigenen Modul - wo wie bei der Contao 3.5 Version in die tl_calender_events.php geschrieben:

    PHP-Code:

    $GLOBALS
    ['TL_DCA']['tl_calendar_events']['fields']['headerImageSRC'] = array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_calendar_events']['headerImageSRC'],
                
    'exclude'                 => true,
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('filesOnly'=>true'extensions'=>Config::get('validImageTypes'), 'fieldType'=>'radio''mandatory'=>true),
                
    'save_callback' => array
                (
                    array(
    'tl_calendar_events''storeFileMetaInformation')
                ),
                
    'sql'                     => "binary(16) NULL"
            
    );

    class 
    tl_calendar_events extends Backend
    {
        public function 
    storeFileMetaInformation($varValueDataContainer $dc)
        {
            if (
    $dc->activeRecord->singleSRC != $varValue)
            {
                
    $this->addFileMetaInformationToRequest($varValue'tl_calendar'$dc->activeRecord->pid);
            }

            return 
    $varValue;
        }


    Da sagt mir der Stack Trace:

    Compile Error: Cannot declare class tl_calendar_events, because the name is already in use

    Offenbar geht das so nicht mehr?


    THomas
    Das hat mit Sicherheit auch in Contao 3 nicht funktioniert. Die Klasse tl_calendar_events existiert bereits, du musst deine Klasse einfach anders benennen (ist ganz egal wie). Du kannst Callbacks auch über den modernen Weg registrieren.
    » sponsor me via GitHub or PayPal or Revolut

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
  •