ModifierGroupThemeContentView überladen

Thema wurde von M. Zitzmann, 22. April 2020 erstellt.

  1. M. Zitzmann

    M. Zitzmann Erfahrener Benutzer

    Registriert seit:
    3. März 2016
    Beiträge:
    367
    Danke erhalten:
    118
    Danke vergeben:
    39
    Hallo,

    ich versuche gerade die

    /GXMainComponents/View/ThemeContentViews/products/ModifierGroupThemeContentView.php

    zu erweitern.
    In der Templatedatei modifier_group_type_dropdown.html kommt das aber nicht an.
    Wenn ich die originale ModifierGroupThemeContentView.php erweitere funktioniert es.

    Ist das über den GXModules Ordner überhaupt möglich?
     
  2. Marvin (Gambio)

    Marvin (Gambio) Moderator
    Mitarbeiter

    Registriert seit:
    5. Februar 2019
    Beiträge:
    68
    Danke erhalten:
    33
    Danke vergeben:
    22
    Hallo,

    aktuell ist es nicht möglich diese Klassen zu überladen. Wir sind aber dabei dafür eine Lösung zu finden. Sobald ich dazu mehr Informationen habe werde ich in diesen Beitrag noch einmal schreiben.
     
  3. M. Zitzmann

    M. Zitzmann Erfahrener Benutzer

    Registriert seit:
    3. März 2016
    Beiträge:
    367
    Danke erhalten:
    118
    Danke vergeben:
    39
    Danke.

    Wäre es alternativ dazu möglich daß man für ein Theme unterdrückt daß die product_info_option_template_product_options_dropdown.html von der modifier_group_type_dropdown.html überschrieben wird?

    In der product_info_template_standard.html sind sowohl die {$MODULE_modifier_groups} als auch die {$MODULE_product_options} untereinander vorhanden, es werden aber nur die {$MODULE_modifier_groups} ausgegeben.
     
  4. Marvin (Gambio)

    Marvin (Gambio) Moderator
    Mitarbeiter

    Registriert seit:
    5. Februar 2019
    Beiträge:
    68
    Danke erhalten:
    33
    Danke vergeben:
    22
    Ich habe dazu mal ein Ticket erstellt. Die ModifierGroupThemeContentView und ModifierGroupsThemeContentView werden bald überladbar sein.
     
  5. M. Zitzmann

    M. Zitzmann Erfahrener Benutzer

    Registriert seit:
    3. März 2016
    Beiträge:
    367
    Danke erhalten:
    118
    Danke vergeben:
    39
    Im Ticket steht nun erledigt aber 0%.
    ?
    Ich habs mal getestet in der 4.1.1.0 - funktioniert.

    Noch eine Frage dazu:
    Mit welcher Variable kann ich in der ModifierGroupThemeContentView die Artikel-ID auslesen?
     
  6. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Wir nutzen das "erledigt" in unseren Tickets nicht.

    $this->sellingUnit->id()->productId()->value() führt zur Artikel-ID.
     
  7. M. Zitzmann

    M. Zitzmann Erfahrener Benutzer

    Registriert seit:
    3. März 2016
    Beiträge:
    367
    Danke erhalten:
    118
    Danke vergeben:
    39
    Stimmt, aber:

    Wenn ich in der originalen Datei die ID in der Funktion prepare_data() so hole kann ich die auch ausgeben.

    In meiner "Überladungsdatei" funktioniert das nicht:

    Code:
        
    public function prepare_data()
        {
            $productId = $this->sellingUnit->id()->productId()->value();
            return parent::prepare_data();
        }
    
    Fehlerlog:
    [2020-06-06 13:39:04 | ERROR] Uncaught Error: Call to a member function id() on null in /var/customers/xxxxx/GXModules/Name/MeinModul/Shop/Overloads/ModifierGroupThemeContentView/TEST_ModifierGroupThemeContentView.php:21
     
  8. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    #8 Moritz (Gambio), 6. Juni 2020
    Zuletzt bearbeitet: 6. Juni 2020
    Da ist uns leider ein weiterer Fehler unterlaufen, nämlich dass
    $sellingUnit private statt protected ist. Somit hast du keinen Zugriff. Das müssen wir korrigieren.
     
  9. M. Zitzmann

    M. Zitzmann Erfahrener Benutzer

    Registriert seit:
    3. März 2016
    Beiträge:
    367
    Danke erhalten:
    118
    Danke vergeben:
    39
  10. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Weil du es bist, kommts mit der 4.1.1.1 ;).
     
  11. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Du kannst auch den Konstruktor überladen, um so an die $sellingUnit zu kommen.

    PHP:
    public function __construct(SellingUnitInterface $sellingUnitCustomersStatusShowPrice $showPriceStatus)
    {
        
    parent::__construct($sellingUnit$showPriceStatus);
        
    $this->mySellingUnit $sellingUnit;
    }

    public function 
    prepare_data()
    {
        
    $productId $this->mySellingUnit->id()->productId()->value();
        return 
    parent::prepare_data();
    }