Ergebnis 1 bis 15 von 15

Thema: BE-Auswahlfilter mit Beziehungen über mehrere MetaModels

  1. #1
    Contao-Nutzer
    Registriert seit
    07.07.2016.
    Beiträge
    65

    Standard BE-Auswahlfilter mit Beziehungen über mehrere MetaModels

    Hallo Community

    Ich habe eine kleine Frage:

    Ich habe drei MetaModels erstellt. Das Beispiel ist einfach mal exemplarisch zu verstehen: MetaModels 1 (Land) steht in einer 1:n-Beziehung mit MetaModels 2 (Region), welches wiederum in einer 1:n-Beziehung mit MetaModels 3 (Gemeinde) steht.

    Wie kann ich auf elegante Art und Weise in der BE-Eingabe von MetaModels 3 zuerst das Land (aus MetaModels 1) auswählen, welches mir dann die dazugehörenden Regionen (aus MetaModels 2) anzeigt, welche ich dann der Gemeinde zuordnen kann?

    Ich habe es bislang mit kombinierten Attributen gemacht, damit ich in MetaModels 3 dann eine Auswahl mit den Werten (Land, Region) auswählen kann. Aber das wird dann bald recht lang.

    Eine Vorfilterung wäre super, und ich bin fast sicher, dass auch das mit MetaModels möglich ist.

    Ich danke schon jetzt für konstruktive Rückmeldungen!

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

    Standard

    dazu gibt es ein, zwei Postings...

    Du musst jeweils einen Filter (eig. SQL) bei den Selects einbauen, der aus der (BE)URL die entsprechenden Daten raus fischt und nur die entsprechenden "Kind-Daten" anzeigt

  3. #3
    Contao-Nutzer
    Registriert seit
    07.07.2016.
    Beiträge
    65

    Standard

    Hi zonky

    Danke für deine Rückmeldung. Ok, das Prinzip verstehe ich. Ich werde es mal über das WE testen.

    Danke dir und Gruss

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

    Standard

    dann schreib doch gleich ein "Rezept" für das "Kochbuch" (MM-Handbuch)...

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

    Standard

    @ DanEi

    wie sieht´s aus?

  6. #6
    Contao-Nutzer
    Registriert seit
    07.07.2016.
    Beiträge
    65

    Standard

    Hi Zonky

    Sorry, bin noch nicht dazu gekommen... Sobald dies der Fall ist, werde ich mich wieder melden. Jetzt aber ferienbedingt abwesend.

    Mit Gruss

  7. #7
    Contao-Nutzer
    Registriert seit
    07.07.2016.
    Beiträge
    65

    Standard Kleiner Nachtrag

    Da sich der Auftrag Richtung Webshop verändert hat, habe ich mich vom MetaModels-Ansatz verabschiedet und hab es mit Isotope umgesetzt.

    Aber danke für deinen Support, Zonky!

  8. #8
    Contao-Fan
    Registriert seit
    20.10.2014.
    Beiträge
    492

    Standard

    Habe ähnliche Aufgabenstellung.

    Es gibt 3 Metamodelle:

    Hersteller (z.B. VW, Audi, BMW) -> Eingabe Hersteller
    Modell (z.B. Golf, A4, X3) -> Select Hersteller, Eingabe Modellname
    Fahrzeug (z.B. VW Golf / Bj. 2005) -> Select Hersteller, Select Modell

    Im MM Fahrzeug wird zuerst der Hersteller über ein Select befüllt, danach lädt die Seite neu und es werden nur Modelle zum ausgewählten Hersteller angezeigt.
    Funktioniert soweit ganz gut über folgenden SQL-Filter im MM Fahrzeuge:

    PHP-Code:
    SELECT id FROM mm_fahrzeuge WHERE IFNULL (hersteller={{param::post?name=hersteller}},hersteller
    Möchte ich allerdings einen gespeicherten Datensatz erneut bearbeiten ist die Zuordnung der Modelle nicht mehr gegeben (siehe Anhang).
    Vllt hat ja einer eine Idee wie das Problem zu beheben ist?

    Gruß Marco
    Angehängte Grafiken Angehängte Grafiken

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

    Standard

    ich nehme an, Du hast das Filterset mit der Filterregel bei dem Attribut Auswahl "Modell" im BE ausgewählt?

    dann sollte der m.E. auch mein Laden der Seite zünden - ggf. im Query mal ein "xx" anhängen => damit sollte ein (PHP) Fehler geworfen werden und man sieht, was im Query steht

    Ich vermute, ohne Neuwahl der Seite ist das Query

    Code:
    SELECT id FROM mm_fahrzeuge WHERE hersteller=hersteller
    und da ist die Frage, ob da das Richtige gefunden wird => check per phpMyAdmin


    ansonsten - siehe https://community.contao.org/de/show...270#post408270 bei "Wichtig"

  10. #10
    Contao-Fan
    Registriert seit
    20.10.2014.
    Beiträge
    492

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ich nehme an, Du hast das Filterset mit der Filterregel bei dem Attribut Auswahl "Modell" im BE ausgewählt?
    Ja das habe ich gemacht.

    "Zündet" allerdings nur wenn im Select Hersteller eine Auswahl gemacht wird. Wird der gespeicherte Datensatz erneut aufgerufen wird nicht "gezündet"... Komisch

    Contao 3.5.15 // MM via Composer dev-hotfix/alpha-13 // DCG dev-hotfix/beta-37 // attr_select dev-hotfix-2.0.0-alpha11
    Geändert von marcohe (04.09.2016 um 11:24 Uhr)

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

    Standard

    warum das SQL nicht auch beim normalen öffnen ausgewertet wird, kann ich ad hoc auch nicht sagen... hmm?

    Edit:
    kann ich nicht bestätigen - ein Query mit Fehler eingebaut und sofort wird Fehler geworfen, wenn ich ein Item bearbeiten möchte (C 3.5.15, DCG b38 und core a14)
    Code:
    Fatal error: Uncaught exception Exception with message Query error: Unknown column 'xxx' in 'where clause' (select * from mm_abteilung where xxx) thrown in system\modules\core\library\Contao\Database\Statement.php on line 295
    btw:
    * warum attribut_select auf hotfix alpha11 und nicht master?
    * warum kein Update auf aktuelles DCG b38 und core a14?

    Edit2:
    wenn ich mir Dein Query ansehe, sollte dort die ID des Datensatzes mit einfließen (siehe URL "id=<tabellenname>::<ID>"), wenn erneut aufgerufen...

  12. #12
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Frage

    Das verhalten kann ich bestätigen
    Möchte ich allerdings einen gespeicherten Datensatz erneut bearbeiten ist die Zuordnung der Modelle nicht mehr gegeben (siehe Anhang).
    Habe bei mir zwei Auswahlfelder. Sobald das erste Feld ausgewählt wurde, werden im zweiten Select nur noch die passende Einträge aufgelistet.

    Sobald man aber das Item speichert, werden im zweiten Feld alle Einträge aufgelistet.

    Hier mein Filter für das zweite Select-Feld
    Code:
    SELECT * FROM mm_objects_locations_addresses
             WHERE IFNULL ( pid = {{param::post?name=objectID}}, pid )
    Contao 3.5.15 // MM via Composer dev-hotfix/alpha-14 // DCG dev-hotfix/beta-38 // attr_select dev-master

  13. #13
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    HTML

    Habe es jetzt so gelöst...

    Filter-Einstellungen.png

    Filter-Set mit einer ODER-Bedingung (Nach erstem Treffer beenden!)

    1. Bedingung
    Code:
    SELECT * FROM mm_objects_locations_addresses
             WHERE pid = {{param::post?name=objectID}}
    2. Bedingung
    Code:
    SELECT * FROM mm_objects_locations_addresses
             WHERE pid = ( SELECT objectID FROM mm_documents_offers
                                           WHERE id = TRIM(SUBSTRING_INDEX(' {{get::id}} ',':',-1))
                                           )
    So werden die Auswahlmöglichkeiten im zweite Select-Feld immer gemäss dem Eltern-Element eingetragen.

    Für {{get::id}} braucht es noch die Erweiterung "inputvar"

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

    Standard

    Zitat Zitat von tognit Beitrag anzeigen
    Hier mein Filter für das zweite Select-Feld
    Code:
    SELECT * FROM mm_objects_locations_addresses
             WHERE IFNULL ( pid = {{param::post?name=objectID}}, pid )
    kann mich hier nur nochmal wiederholen:

    * werft einen Fehler
    * guckt euch das SQL an
    * testet es per phpMyAdmin

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

    Standard

    Zitat Zitat von tognit Beitrag anzeigen
    Für {{get::id}} braucht es noch die Erweiterung "inputvar"
    kann man machen - muss man aber nicht => siehe Hilfe-Icon bei SQL-Feld: param::get

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
  •