Ergebnis 1 bis 7 von 7

Thema: 3.5.24 - Cannot redeclare after() - Nur mit Servercache

  1. #1
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard 3.5.24 - Cannot redeclare after() - Nur mit Servercache

    Guten Tag,

    Hab ein sehr seltsames Problem.

    Über das Template eines Modules wird per Insert Module ein anderes eingebunden.
    In diesem wurde eine Klasse definiert. Und alles funktioniert wie es soll.

    Sobald man jetzt aber in den Einstellungen Den Serverchache verwendet zeigt Contao nur noch diese Fehlermeldung.

    "Cannot redeclare after() (previously declared in.....:"

    Mit Nur Browsercache verwenden oder Cache deaktivieren funktioniert alles.

    Dieses Verhalten ist auf mehreren Servern getestet worden (unter anderem auch 1&1)

    Nachtrag: Dieses Verhalten bezieht sich auf den Firefox
    im Chrome funktioniert die Seite .....
    IE10 meldet "Die Website kann diese Seite nicht anzeigen"
    Geändert von Nacht69 (29.09.2017 um 14:17 Uhr)

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

    Standard

    Erkläre genauer was du machst. Zeige deinen Code. Das hört sich so an als ob du etwas machst, was du gar nicht machen solltest

  3. #3
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Erkläre genauer was du machst. Zeige deinen Code. Das hört sich so an als ob du etwas machst, was du gar nicht machen solltest
    Da die Inhalte mit Metamodels angelegt wurden und wir diese mittlerweile Umgehen wollen. (nicht zuletzt wegen den responsiven Bildergrößen)
    werden jetzt die Inhalte per Datenbankabfrage und eigenen Php Template angezeigt. Lediglich die Liste/Reader thematik bleibt. Und anstatt mit Metamodels hier die Liste bzw den Reader auszugeben geben wir ein eigenes Modul aus ... per insert Tag.

    Hoffe das war einigermaßen verständlich :/


    metamodel_reader:

    Code:
    <?php $strRendersettings = isset($this->settings)? 'settings' : 'view'; ?>
    <?php if (count($this->data)): 
    foreach ($this->data as $arrItem): 
    $GLOBALS['objPage']->mm_bb_id = $arrItem['raw']['id'];
    endforeach;
    //detail
    ?>
    {{insert_module::134}}
    <?php else: 
    //liste 
    ?>
    {{insert_module::132}}
    <?php endif; ?>

    Module 132

    Code:
    <?php 
    
      function after ($this, $inthat)
        {
            if (!is_bool(strpos($inthat, $this)))
            return substr($inthat, strpos($inthat,$this)+strlen($this));
        };
     function before ($this, $inthat)
        {
            return substr($inthat, 0, strpos($inthat, $this));
        };
    
    
     function between ($this, $that, $inthat)
        {
            return before ($that, after($this, $inthat));
        };
    
    ...... und dann die abfrage und ausgabe
    Geändert von Nacht69 (29.09.2017 um 14:23 Uhr)

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

    Standard

    Du musst den ganzen Code posten und dein Modul näher beschreiben. Ich verstehe noch nicht ganz was und warum du das machst.

  5. #5
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du musst den ganzen Code posten und dein Modul näher beschreiben. Ich verstehe noch nicht ganz was und warum du das machst.
    Das ist im endeffekt der ganze code.
    Was darunter passiert ist egal ... selbes problem wenn danach nur noch echo 'test'; kommt.

    Warum:
    Wir hatten mit Metamodels nur Probleme. Schon alleine das "$this->insert('picture_default', $xxx);" funktioniert nicht. Also machen wir die Ausgabe über ein eigenes Template das einfach die Datenbank abfragt und dann die Items ausgibt.

    Die Detailseiten thematik jedoch verwenden wir noch von Metamodels [auto-item und damit keine fehlermeldung kommt - mittlerweile haben wir das (bei neueren installationen) auch mit einem eigenständigen Modul gelöst ...]. Deswegen das erste Template.


    Das erste template sagt im endeffekt:

    Anstatt den Metamodels reader anzuzeigen wenn ein Item vorhanden ist, zeige Modul 1 an (eine Datenbankabfrage die nur das eine Item ausgibt)
    wenn kein Item vorhanden ist zeige Modul 2 an (eine Datenbankabfrage die alle Items in einer Tabelle ausgibt).

    Nichts großartiges eigentl. und ich denke nicht dass hier der fehler liegt ...


    Die Function könnt ich natürlich rausnehmen und anders lösen (ohne classen usw) dann wär der fehler weg. Jedoch zeigt mir das verhalten, dass irgendwas nichts stimmen kann.
    Das Modul wird auch nicht zweimal eingebunden oder ähnliches. Es funktioniert ja sogar tadellos ohne Servercache.
    Geändert von Nacht69 (29.09.2017 um 15:12 Uhr)

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

    Standard

    Zitat Zitat von Nacht69 Beitrag anzeigen
    Das ist im endeffekt der ganze code.
    Das kann nicht sein. Du fügst ein Modul mit {{insert_module::134}} - aber das Modul muss ja auch im Backend angelegt sein und daher eine komplette Modul Klasse sein.

    Oder meinst du damit, du hast dir ein HTML Modul angelegt, wo du ein Template ausgewählt hast und in diesem Template steht einfach nur
    PHP-Code:
    <?php 

      
    function after ($this$inthat)
        {
            if (!
    is_bool(strpos($inthat$this)))
            return 
    substr($inthatstrpos($inthat,$this)+strlen($this));
        };
     function 
    before ($this$inthat)
        {
            return 
    substr($inthat0strpos($inthat$this));
        };


     function 
    between ($this$that$inthat)
        {
            return 
    before ($thatafter($this$inthat));
        };

    drin? Wenn ja, das funktioniert so nicht. Wenn du oder Contao dieses Modul öfter als einmal einfügst, kommt es zu dem von dir beschriebenen Fehler, da du dann alle diese Funktionen nochmal deklarieren würdest.

  7. #7
    Contao-Fan
    Registriert seit
    16.01.2012.
    Beiträge
    418

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das kann nicht sein. Du fügst ein Modul mit {{insert_module::134}} - aber das Modul muss ja auch im Backend angelegt sein und daher eine komplette Modul Klasse sein.

    Oder meinst du damit, du hast dir ein HTML Modul angelegt, wo du ein Template ausgewählt hast und in diesem Template steht einfach nur
    PHP-Code:
    <?php 

      
    function after ($this$inthat)
        {
            if (!
    is_bool(strpos($inthat$this)))
            return 
    substr($inthatstrpos($inthat,$this)+strlen($this));
        };
     function 
    before ($this$inthat)
        {
            return 
    substr($inthat0strpos($inthat$this));
        };


     function 
    between ($this$that$inthat)
        {
            return 
    before ($thatafter($this$inthat));
        };

    drin? Wenn ja, das funktioniert so nicht. Wenn du oder Contao dieses Modul öfter als einmal einfügst, kommt es zu dem von dir beschriebenen Fehler, da du dann alle diese Funktionen nochmal deklarieren würdest.
    Vielen Dank erstmal!

    genau, zweiteres. (HTML Modul mit Template)
    Aber wo wird das Modul öfter als einmal eingefügt? (Da hab ich schon alles ausgeschlossen (leeres layout, leerer artikel).... - das war eben auch meine erste vermutung ... also das naheliegendste) Und wieso kommt der Fehler nicht wenn man den Servercache nicht aktiviert - und nur im Firefox?
    Geändert von Nacht69 (29.09.2017 um 15:57 Uhr)

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
  •