Ergebnis 1 bis 6 von 6

Thema: calculatePrice - Hook

  1. #1
    Contao-Nutzer
    Registriert seit
    16.09.2012.
    Beiträge
    59

    Standard calculatePrice - Hook

    Hallo zusammen,

    ich habe einen isotope Shop mit verschiedenen Preisen für verschiedene Mitgliedergruppen.
    Diese unterschiedlichen Preise bzw. den sich daraus ergebenen Rabatt würde ich gerne in der Produktdarstellung anzeigen.
    Mit einer allgemeinen Rabattregel passiert das bereits automatisch und das Template gibt den Strike Price nach außen, der durchgestrichen dargestellt wird.
    Gastuser = Basispreis = 10,00 €
    Silberuser = 8,20 €
    Golduser = 6,00 €

    ich möchte immer den Unterschied zum Gastuser Preis darstellen. Alle Preise sind individuell gesetzt und können deshalb leider nicht über eine Pauschale 20% Rabattregel definiert werden.
    Hier sind meine ersten Versuche den calculatePrice Hook dafür zu verwenden.
    Ich bekomme allerdings weder den geänderten Preis noch die Errormeldung.

    Irgendwas passt am Ansatz noch nicht. Kann mir bitte jemand helfen?

    Code:
    <?php
    // src/EventListener/PriceCalculationListener.php
    namespace AppBundle\EventListener;
    
    use Isotope\Model\Product;
    use Contao\CoreBundle\ServiceAnnotation\Hook;
    
    class PriceCalculationListener
    {
        /**
         * @Hook("calculatePrice")
         */
        public function onCalculatePrice($fltPrice, Product $objProduct, array $arrConfig)
        {
            return $fltPrice * 2;
            error_log('CalculatePrice Hook wurde aufgerufen');
    
            
        }
    }
    in der services.yml registriert.
    Code:
      AppBundle\EventListener\PriceCalculationListener:
        tags:
          - { name: 'contao.hook', hook: 'calculatePrice', method: 'onCalculatePrice' }

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von 1gluecksgriff Beitrag anzeigen
    in der services.yml registriert.
    Code:
      AppBundle\EventListener\PriceCalculationListener:
        tags:
          - { name: 'contao.hook', hook: 'calculatePrice', method: 'onCalculatePrice' }
    wenn per service.yml, dann die Annotation in der Klasse raus...

    pack mal noch ein
    public: true
    hinzu
    und auf Konsole mal ein "composer install" machen

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

    Standard

    Isotope Hooks können nicht über Service Tagging registriert werden, das muss nach wie für über die config.php gemacht werden (Services können aber genutzt werden).
    » sponsor me via GitHub or PayPal or Revolut

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    <?php

    declare(strict_types=1);

    namespace 
    App\EventListener;

    use 
    Isotope\ServiceAnnotation\IsotopeHook;

    /**
     * @IsotopeHook("calculatePrice")
     */
    class MyListener
    {
        public function 
    __invoke(float $price,.....): float
        
    {
            
    // Logik
            
    return $price;
        }
    }
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Contao-Nutzer
    Registriert seit
    16.09.2012.
    Beiträge
    59

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Isotope Hooks können nicht über Service Tagging registriert werden, das muss nach wie für über die config.php gemacht werden (Services können aber genutzt werden).
    über die config.php hat es jetzt funktioniert:
    Code:
    /* 
     * PriceCalculationListener hinzufügen
    */
    
    $GLOBALS['ISO_HOOKS']['calculatePrice'][] = array('PriceCalculationListener', 'myCalculatePrice');
    
    class PriceCalculationListener
    {
        public function myCalculatePrice($fltPrice, $objProduct, $arrConfig)
        {
            // Ihre Logik zur Preisberechnung hier
            return $fltPrice * 3;
        }
    }
    Allerdings bin ich garnicht mehr sicher ob das der richtige Hook dafür ist ...
    ich will ja eigentlich einen zweiten Preis anzeigen.

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

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    PHP-Code:
    <?php

    declare(strict_types=1);

    namespace 
    App\EventListener;

    use 
    Isotope\ServiceAnnotation\IsotopeHook;

    /**
     * @IsotopeHook("calculatePrice")
     */
    class MyListener
    {
        public function 
    __invoke(float $price,.....): float
        
    {
            
    // Logik
            
    return $price;
        }
    }
    Ah ja, nvm then
    » 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
  •