_getProducts(OrderDetailsCartContentViewInterface $orderDetailsCartContentView) überladen

Thema wurde von BigRib, 25. Januar 2023 erstellt.

  1. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    Hallöchen,

    hat jemand eine Idee, ob ich die Methode überladen kann, ohne dass ich sie komplett überschreibe?

    /GXMainComponents/Controllers/HttpView/ShopAjax/CartController.inc.php
    function _getProducts()

    Ich muss folgende Zeilen hinzufügen, damit sie im Warenkorb nach einen refresh angezeigt werden.

    Code:
    $orderDetailsCartContentView->set_content_data('PRODUCTS_MASSAGE', $productData['PRODUCTS_MASSAGE']);
                $orderDetailsCartContentView->set_content_data('PRODUCTS_LIMIT_BOX', $productData['PRODUCTS_LIMIT_BOX']);
    
    Mit parent::_getProducts(....) gehts leider nicht, da ich hier bereits fertiges HTML zurück bekomme.

    Danke
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.671
    Danke erhalten:
    1.265
    Danke vergeben:
    300
    @BigRib Du könntest einfach die
    OrderDetailsCartThemeContentView überladen und darin die
    prepare_data Funktion, dann brauchst du deine Daten nicht immer überall einfügen, sondern nur einmal.

    PHP:

    function prepare_data()
    {
        
    parent::prepare_data();
        for (
    $i 0$n count($this->products); $i $n$i++) {
            
    $this->moduleContent[$i] = ['PRODUCTS_MASSAGE'   => 'Meine Daten Message',
                                        
    'PRODUCTS_LIMIT_BOX' => 'Mein Limit',
            ];
        }
    }

     
  3. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    #3 BigRib, 25. Januar 2023
    Zuletzt bearbeitet: 25. Januar 2023
    Hi Till,

    das habe ich, es funktioniert auch beim ersten Seitenaufruf. Wenn der Warenkorb aber per Ajax refreshed wird, sind meine Boxen weg, da sie von der oben genannten Funktion überschrieben werden.

    Die Variable ändert sich dann auch. Beim ersten Seitenaufruf ist es
    Code:
    $module_data.PRODUCTS_LIMIT_BOX
    
    Wenn man refreshed (also z.b. die Anzahl ändert oder einen Artikel löscht), dann muss ich die Variable
    Code:
    $PRODUCTS_LIMIT_BOX.
    
    nutzen und die wird über Ajax gefüllt.

    Oder ich ersetze den Block
    Code:
    {block name="cart_order_preview_item_order_item_snippet_include"}
    
    und setze da noch ein
    Code:
    PRODUCTS_LIMIT_BOX=$module_data.PRODUCTS_LIMIT_BOX
    
    rein, dann bleibt es bei $PRODUCTS_LIMIT_BOX
     
  4. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.671
    Danke erhalten:
    1.265
    Danke vergeben:
    300
    @BigRib Kannst du einmal ein Ticket aufmachen dann schaue ich mir das mal direkt in deinem Shop an. Oder du sendest deine PHP Dateien mal als Anhang mit, damit ich das in einem Testshop ansehen kann.
     
  6. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    @Till (Gambio) Ich habe die Daten im Testshop aktualisiert, solltest nun Zugriff haben.

    #101516730

     
  7. MJ

    MJ Erfahrener Benutzer

    Registriert seit:
    28. April 2011
    Beiträge:
    525
    Danke erhalten:
    54
    Danke vergeben:
    91
    Lasst uns dann ruhig teilhaben ;)
     
  8. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    Ist leider so wie von mir beschrieben. Die Funktion muss aktuell noch komplett ersetzt werden.