Ergebnis 1 bis 20 von 20

Thema: MetaModel-Frontendfilter über mehrere MM

  1. #1
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard MetaModel-Frontendfilter über mehrere MM

    Hallo zusammen,

    ich habe eine kleine Blockade und komme nicht weiter. Es geht um eine Kursdatenbank mit folgenden 3 MM:

    Code:
    mm_category [category_title, category_alias, category_description, category_image]
    mm_service [service_title, service_alias, service_desription, category_alias]
    mm_prices [price_price, price_time, service_alias]
    mm_category und mm_services sind über category_alias verknüpft
    mm_prices und mm_services sind über service_alias verknüpft (mm_prices ist zusätzlich eine Kindtabelle von mm_services)

    Ich benötige nun ein Frontendfilter-Modul um nach category_alias, price_price und price_time zu filtern.

    price_price und price_time habe ich hinbekommen. Aber wie bekomme ich nun noch category_alias dazu?

    Wenn Screenshots oder weitere Infos benötigt werden liefere ich die gern nach. Hat jemand einen Ansatz für mich?

    VG, Frank

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

    Standard

    ich nehme an, Deine Liste ist das mm_service?

    mm_category ist per "Auswahl" [select] mit mm_service verknüpft bzw. umgedreht?

    dann solltest Du eine Filterregel für Kategorie anlegen können, die in dem Filterset für den FE-Filter auch erscheint

  3. #3
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Die Liste ist mm_categories. Im Template hole ich über folgenden Code die zugehörigen Datensätze aus den verknüpften Models:

    Code:
    function getServicesByCategory($strAlias, $format = 'html5') {
        $objMetaModel = \MetaModels\Factory::byTableName('mm_services');
        $objFilter = $objMetaModel->prepareFilter(5, array());
        $objFilter->addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel->getAttribute('service_category'), $strAlias, $objMetaModel->getAvailableLanguages()));
        $objItems = $objMetaModel->findByFilter($objFilter);
        return $objItems->parseAll($format, $objMetaModel->getView(6));
    }
    
    function getPriceByService($strAlias, $format = 'html5') {
        $objMetaModel = \MetaModels\Factory::byTableName('mm_prices');
        $objFilter = $objMetaModel->prepareFilter(6, array());
        $objFilter->addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel->getAttribute('service_alias'), $strAlias, $objMetaModel->getAvailableLanguages()));
        $objItems = $objMetaModel->findByFilter($objFilter, $strSortBy = 'price_time', $intOffset = 0, $intLimit = 1, $strSortOrder = 'ASC');
        return $objItems->parseAll($format, $objMetaModel->getView(7));
    }
    Ich kann jetzt als Modul jeweils einen FrontendFilter für mm_category und mm_prices anlegen. Es werden dann aber zwei getrennte Formulare generiert. Das Ziel wäre, das alles in einem Formular unterzubringen um nicht mehrere Senden-Buttons zu haben.

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

    Standard

    gib mal aus was im Template ankommt

    http://metamodels.readthedocs.org/de...templates.html

    m.E. benötigst Du die Abfragen nicht...

  5. #5
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Da kommen nur die Kategorien aus mm_categories an.

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

    Standard

    kannst Du das Array mal posten...

    ich habe das Gefühl, Dein MM ist noch nicht optimal eingestellt...

  7. #7
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Die komplette Debug-Ausgabe? Das sind ca 14.000 Zeilen?

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

    Standard

    _ein_ komplettes Item reicht

  9. #9
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Guten Morgen,

    hier mal das komplette erste Item aus mm_categories

    debug.txt

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

    Standard

    so wie es aussieht, stimmt Deine Verknüpfung nicht oder wird an das FE nicht "durchgereicht"

    das Array sollte so was enthalten wie hier die "Abteilung"

    Code:
    Array
    (
        [0] => Array
            (
                [raw] => Array
                    (
                        [id] => 93
                        [pid] => 0
                        [sorting] => 0
                        [tstamp] => 1442415486
                        [name] => Avery
                        [vorname] => Amir
                        [email] => Amir.Avery@mmtest.com
                        [abteilung] => Array
                            (
                                [__SELECT_RAW__] => Array
                                    (
                                        [id] => 4
                                        [pid] => 0
                                        [sorting] => 0
                                        [tstamp] => 1442499032
                                        [name] => Marketing
                                        [alias] => marketing
                                    )
    
                                [name] => Marketing
                                [alias] => marketing
                            )
    
                    )
    
                [text] => Array
                    (
                        [name] => Avery
                        [vorname] => Amir
                        [email] => Amir.Avery@mmtest.com
                        [abteilung] => Marketing
                    )
    
                [attributes] => Array
                    (
                        [name] => Name
                        [vorname] => Vorname
                        [email] => E-Mail
                        [abteilung] => Abteilung
                    )
    
                [html5] => Array
                    (
                        [name] => <span class="text">Avery</span>
                        [vorname] => <span class="text">Amir</span>
                        [email] => <span class="text">Amir.Avery@mmtest.com</span>
                        [abteilung] => Marketing
                    )
    
                [class] => first even
                [jumpTo] => Array
                    (
                    )
    
            )
    ...
    siehe http://www.e-spin.de/contao-metamodels.html
    ""Mein erstes MetaModel(s)" V2"-Paket

  11. #11
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Das befindet sich bei mir in mm_services, das Feld "category_alias" stellt die Verknüpfung zu mm_categories her

    In mm_prices befindet sich die Verknüpfung zu mm_services über das Feld "service_alias"

    Kategorie 1:n Services 1:n Preise

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

    Standard

    vielleicht habe ich Dein Ziel nicht verstanden...

    m.E. willst Du im FE alle Services ausgeben und nach Kategorie und Preis filtern - wenn ja

    * Filterset in mm_service anlegen mit Fiterregeln z.B. Auswahl und von/bis
    * im FE Liste auf mm_service und Filter mit dem Filterset

  13. #13
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Das Ziel hast Du richtig verstanden. Allerdings stehen die Preise ja in mm_prices und nicht in mm_services, da es für jedes item in mm_services mehrere in mm_prices gibt.

    z.B.:

    Code:
    Kategorie 1:
      Angebot 1
        1h/100€
        2h/200€
      Angebot 2
        1h/50€
        2h/100€
    Kategorie 2:
      Angebot 3
        1h/60€
        2h/120€
      Angebot 4
        1h/50€
        2h/100€
    Jetzt soll z.B. nach Angeboten der Kategorie 1 für bis zu 100€ gesucht werden können. Ergebnis wäre dann in diesem Beispiel Angebot 1 (1h) und Angebot 2 (1h + 2h)

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

    Standard

    eine Idee wäre, die Preise als Varianten in Angebot bzw. mm_service zu packen - dann sollte man darüber einen Filter hin bekommen

  15. #15
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Das wäre noch eine Option. Allerdings renne ich da in das nächste Problem.

    Habe mal testweise eine neues MM angelegt:

    Code:
    mm_leistungen
      title (text)
      dauer (numeric, varianten überschreiben)
      preis (numeric, varianten überschreiben)
    Bei dauer und preis habe ich "Varianten überschreiben" aktiviert. Will ich nun einen neuen Datensatz anlegen, werden mir nur diese beiden angezeigt. Aktiviere ich bei title auch die Option "Varianten überschreiben" wird mir dieses Feld auch angezeigt. Der Titel sollte aber eigentlich nicht überschrieben werden können. Habe ich da was übersehen? Im Wiki finde ich zu den Varianten auch nichts so richtig.

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

    Standard

    Du musst Dich entscheiden, welche Attribute "fix" vs. "variabel" sind

    man könnte z.B. einen (festen) Haupt-Titel machen und einen (variablen) Unter-Titel

  17. #17
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Das war der Plan. Allerdings muss ich den Titel variabel machen, damit mir das Feld überhaupt in der Eingabemaske angezeigt wird. Fixe Elemente werden nicht angezeigt.

    Nachtrag: die Backend-Ansicht funktioniert mit den Varianten auch nicht wirklich. Aktiviere ich "Anzeige in Tabellenform", wird mir nur der Titel angezeigt, Preis und Dauer fehlen. Deaktiviere ich diese Option, stehen zwar alle Infos da, allerdings wird dann die Reihenfolge, wie unter Rendereinstellungen festgelegt, ignoriert.
    Geändert von bitverdreher (17.12.2015 um 11:10 Uhr)

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

    Standard

    klingt so als hättest Du nur eine Eingabemaske erstellt - kannst zwei machen
    1x für Titel (im "Hauptitem")
    1x für Preis und Dauer (Variables Item)

  19. #19
    Contao-Nutzer Avatar von bitverdreher
    Registriert seit
    11.06.2010.
    Ort
    Chemnitz
    Beiträge
    50

    Standard

    Eingabemaske: "BE - Fix"

    Standard: aktiviert

    Felder: enthält nur den Titel

    Neuen Datensatz anlegen > leer (nur die Buttons zum speichern)

    Erst wenn ich das Feld für den Titel als "variabel" markiere, wird mir das Feld in der Eingabemaske angezeigt.

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

    Standard

    hmm... habe leider kein aktuelles MM mit Variablen zum Vergleichen

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
  •