Mehrfach-Überladung der Methode get_html

Thema wurde von Steffen (indiv-style.de), 21. April 2015 erstellt.

  1. Steffen (indiv-style.de)
    Steffen (indiv-style.de) G-WARD 2013/14/15/16
    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Irgendwie leide ich an dem Wald -> Bäumesyndrom!

    Ich habe eine Erweiterung, welche die in der Klasse CategoryListingContentView enthaltene Methode get_html überläd. Speziell den Bereich wo die Links generiert werden.

    Nun habe ich auch eine zweite Erweiterung welche genau die gleiche Methode überladen soll aber an einer ganz anderen Stelle.

    Wie geht das mehrfache Überladen der kompletten Methode????? Ich habe schon mit parent::get_html($p_current_category_id); oder return parent::get_html($p_current_category_id); probiert aber entweder nimmt er das eine oder das andere aber nie beide Änderungen.
     
  2. Avenger
    Avenger G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Das ist das gleiche Problem wie hier: http://www.gambio-forum.de/threads/17429-Overloading-von-Produktinfos?p=162238&viewfull=1#post162238...

    "get_html" gibt ja das fertig gerenderte HTML zurück, und da bekommst Du halt das der letzten "get_html()"-Methode.

    Auch diese Routine krankt massiv daran, dass im Generierungsloop für die Daten keine Methode vorgesehen ist, am Ende des Loops eigene Daten einzusteuern (was ja letzten Endes das ist, was man erreichen will.)

    Die im Beispiel gezeigte Vorgehensweise sollte aber auch in diesem Modul funktionieren:

    man überlädt "build_html()", muss aber auch "get_html" überladen (in Deinem Fall, um "$p_current_category_id" auf Klassenebene zugänglich zu machen, da man das vermutlich in "build_html" benötigt,

    PHP:
    <?php
    class mx_OrderDetailsCartContentView extends mx_OrderDetailsCartContentView_parent
    {
      function 
    get_html($p_products_array)
      {
        
    //Save $p_products_array for build_html
        
    $this->p_products_array=$p_products_array;
        return 
    parent::get_html($p_products_array);
      }

      function 
    build_html()
      {
        
    //Get $module_content prepared by "get_html" so far
        
    $module_content=$this->get_content_array();
        
    $module_content=$module_content['module_content'];
        
    //Loop over saved products array and add my data to the $module_content entries
        
    foreach ($this->p_products_array as $index=>$product)
        {
          
    $module_content[$index]['PRODUCTS_INHALT']=$product['products_inhalt'];
        }
        
    //Save new $module_content entries
        
    $this->set_content_data('module_content'$module_content);
        return 
    parent::build_html();
      }
    }
    ?>
    Für diese Fälle (Generierung von Template-Daten in einem Loop) muss Gambio das Klassenkonzept unbedingt noch dahingehend nachbessern, dass im Loop Methoden zum Einbringen eigener Daten vorhanden sind.

    Die "categories"-Klasse ist ein weiteres Beispiel, wo das dringend notwendig ist.
     
  3. Steffen (indiv-style.de)
    Steffen (indiv-style.de) G-WARD 2013/14/15/16
    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Mhhh, man nehme es mir nicht übel aber das ist doch [ZENSUR].... :(

    Gerade weil diese Klassen ja mit 2.1 neu erstellt wurden! Wenn ich jetzt 3 Modulare Entwicklungen an dieser Klasse bzw der get_html-Methode habe, weis ich das und kann das in eine packen aber wie ist das wenn eine Änderung von mir kommt und eine andere von einem anderen Entwickler???

    Da ist Ärger vorprogrammiert! Das sollte DRINGEND abgeändert werden! (Vieleicht gibts ja schon nen Plan???)

    Weiter versteh ich nicht wieso bei Kategorien ohne Unterkat, die Description im Product-Listing erstellt wird und bei Kats mit Unterkats im Kategorielisting??? Kann man solchen "XTC-Unsinn" nicht mal entfernen und vereinheitlichen???
    Ich meine gerade das Listing(Artikel/Kategorie) allgemein wird in sehr vielen Änderungen abgeändert. Das sind ganz wichtige Bereiche, welche besser strukturiert und überladbar sein sollten... BITTE DAS AUF DIE WUNSCHLISTE SETZEN!!
     
  4. Avenger
    Avenger G-WARD 2012/13/14/15
    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ja, das muss überarbeitet werden...

    Aber mit dem von mir aufgezeigten Weg kann man auch heute schon ein "Overload-Chaining" realisiseren....
     
  5. Wilken (Gambio)
    Wilken (Gambio) Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.311
    Danke vergeben:
    2.208
    Ich hab das Thema heute morgen unserer Entwicklung eingeworfen.