Referenzen und Views
am 10.02.2010 - 19:01 Uhr in
Hallo!
Ich habe folgende Node References von Content-Typen:
A <-- B --> C
Wobei neue Nodes von A und C jeweils auf genau ein B verweisen.
Jetzt ist es allerdings so, dass in einem Node A eine Referenz auf einen Node C eingetragen werden KANN (aber zeitlich erst dann, wenn der Node A und der Node C schon bestehen. Bei der Erstellung von Node A und Node C muss die Referenz auf einen Node B bereits hergestellt werden.
A <-- B --> C
------------^
Frage:
Wie stelle ich am besten sicher, dass ich im Node A nur so einen Node C auswählen kann, für den beide auf den GLEICHEN Node B verweisen?
Beispiel:
ich habe Node B1, B2 und B3
ich habe Node
A1 verweist auf B1
A2 verweist auf B2
A3 verweist auf B3
ich habe Node
C1 verweist auf B1
C2 verweist auf B1
C3 verwesit auf B2
Soweit die Referenzen beim Erstellen der Nodes.
Wenn ich jetzt beim Editieren für A1 ein C auswählen will, dann soll mir eine Liste von C1 und C2 dargestellt werden (ich denke das geht am besten mit Views, aber WIE?)
und wenn ich beim Editieren für A3 ein C auswählen will, dann soll die Liste leer sein.
Könnt Ihr mir helfen?
Vielen Dank,
Leo
- Anmelden oder Registrieren um Kommentare zu schreiben
ziemlich tricky
am 10.02.2010 - 19:52 Uhr
Das bedingt auf jeden Fall, dass das referenziert B und referenzierte C bereits erstellt sind bevor A erstellt ist, sofern die Referenz auf C ein Pflichtfeld ist. Leider kann ich mir nicht vorstellen, wozu man soetwas braucht. Bei der Beitragsreferenz kann man doch eine View mitgeben, die die Auswahl einschränkt. Da beim Erstellen des A aber noch nicht klar ist, welches B referenziert wird, fällt wohl diese Lösung auch flach.
Sorry das nur ein paar Gedanken rausgekommen sind, vielleicht helfen sie Dir ja deine Gedanken in die richtige Richtung zu lenken. Mehr kann ich dir momentan nicht bieten. Etwas klarere Bespiele würden das vielleicht vereinfachen gegenüber den abstrakten A's, B's und C's.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
vielleicht hab ichs doch zu umständlich beschreiben
am 10.02.2010 - 23:11 Uhr
Zuerst werden Bs erstellt ==> keine Referenzen
dann werden As erstellt, die referenzieren jeder auf genau ein B
dann werden Cs erstellt, die wiederum ja auf genau ein B referenzieren..
Jetzt soll ein einem As eine Referenz auf C eingetragen werden, dabei sollen aber nur solche Cs zur Auswahl stehen sollen, welche auf dasselbe B referenzieren, wie das entsprechende A...
Und jetzt konrekt:
==================
ich bastle an einem Tool zur Verwaltung von Requirements.
Ich habe eine Reihe von Produkten, das sind Bs
Dann gibt es jede Menge "Requirements", das sind die As, die für genau ein Produkt gelten
Zu jedem Produkt gibt es Releases, das sind die Cs
Und für die Release-Planung möchte ich zuweisen, welches Requirement in welcher Release umgesetzt wird ==> das ist jetzt die Refernz von A nach C.
Vielleicht denke ich auch völlig falsch, weil ich hier vom ER-Diagramm ein Dreieck habe (mein Bauch sagt mir hier nur dazu: "suboptimal").
Eine "Kette": B -> C -> A also Solution -> Release -> Requirement kann ich ja auch wieder nicht machen, weil ich zum Zeitpunkt der Erstellung des Requirements noch gar keine Release dafür habe - ginge höchstens über eine Dummy-Relesaes ("keine Release"), aber das läßt mir dann beim Releaseplanen wieder Möglichkeiten raus, dass ich Requriements ablehen...
Bei der Beitragsreferenz kann man doch eine View mitgeben, die die Auswahl einschränkt. Da beim Erstellen des A aber noch nicht klar ist, welches B referenziert wird, fällt wohl diese Lösung auch flach.
==> das klingt genau nach dem was ich brauche, nur sagt mit "Bei der Beitragsreferenz" jetzt genau gar nix?
Bei Erstellen der As (Requirements) ist jedoch bekannt, welches B (Produkt) referenziert wird, nur die Relase (C) ist halt noch unbekannt.
Die Frage ist: Wenn ich das Requirement (A) editiere, wie gebe ich der View (zur Auswahl von der Release C) das entsprechende Produkt (B) mit, damit nur solche Releases (C) angezeigt werden, die auch zum entsprechenden Produkt gehören(?)
CCK-Feld Betragsreferenz
am 10.02.2010 - 23:41 Uhr
Also was ich meinte findest Du beim Erstellen eines CCK-Feldes vom Typ Beitragsreferenz in den Konfigurationen ganz unten, unter den Abschnitt Erweitert - Beiträge, auf die referenziert werden kann (Ansicht)
Es ist schon richtig, dir ist bekannt auf welches B Du referenzieren willst, aber erst wen du die Verknüpfung gemacht hast, weiss dach auch deine Applikation, und erst Dann kannst Du filltern. Klar was ich damit sagen will, Du kannst die C erst dann listen, wenn das B definiert ist, weil B der Paramerter-Wert ist.
Das Ganze ist für mich schon etwas plastischer jetzt. Ich werde mir mal noch ein paar Gedanken dazu machen auf meinem Arbeitsweg morgenfrüh. Werde dann berichten, machbar ist das bestimmt.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Magst das mal ins UML
am 10.02.2010 - 23:59 Uhr
Magst das mal ins UML übertragen, dann ist das helfen leichter :)
mfg Cyberschorsch
_________
Mei is des schee
mfg Cyberschorsch
_________
ERD
am 11.02.2010 - 02:52 Uhr
Hallo!
Hab da ein Bild erstellt:
Der Foreign-Key von REQUIREMENT.RELEASE auf RELEASE.RELEASE_ID wird erst später gesetzt
(ich hab keine Ahnung wie Drupal intern Daten speichert, aber vermutlich so nicht ;-) )
Wenn das sicher ist...
am 11.02.2010 - 07:04 Uhr
Zuerst werden Bs erstellt ==> keine Referenzen
dann werden As erstellt, die referenzieren jeder auf genau ein B
dann werden Cs erstellt, die wiederum ja auf genau ein B referenzieren..
Jetzt soll ein einem As eine Referenz auf C eingetragen werden, dabei sollen aber nur solche Cs zur Auswahl stehen sollen, welche auf dasselbe B referenzieren, wie das entsprechende A...
Wenn Du diesen Ablauf garantieren kannst und somit folgende Bedingungen immer erfüllt sind,
dann würde ich wie folgt vorgehen:
Bei Punkt 4.2. muss man noch sehen, wie man das Argument übergibt, ausserdem sollte man versuchen diesen nur im Bearbeiten- und nicht im Erstellen-Modus darzustellen.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Sorry für die späte
am 22.02.2010 - 15:56 Uhr
Sorry für die späte Antwort - hab echt viel um die Ohren
3. Erstelle eine Ansicht (View) für die C mit einem Argument für den Inhalt.Produkt (Beitragsref auf B)
4. Erstelle einen Inhaltstyp für A mit 2 Feldern vom Typ Beitragsreferenz
1. 1x Beitragsreferenz auf B
2. 1x Beitragsreferenz auf C, hier die oben erstellte View als Auswahl verlinken.
So - ich hab probiert das Thema "Views & Arguments" zu verstehen - ich hab keinen Erfolg.
zu deinem Schritt 3.: Wie mach ich denn das? Ich nehme mal an, dass ich den "PHP argument code:" verwenden soll.
(weil ich mach ja einen Block-View und keinen Page-View).
und soweit ich verstanden habe, muss als "Ergebnis" immer ein TRUE oder FALSE herauskommen, ABER
ich versteh die logik von DRUPAL hier nicht!
Wie müsste denn hier der PHP-Code aussehen, damit als Ergebnis dieses Views nur solche C's gelistet werden, die einen ganz bestimmten wert eines CCK-Feldes in B hat?
Von den vielen Beiträgen über Views und Arguments hab ich nix gefunden, das mir hilft das Argument-System in Views zu verstehen. Es gibt ellenlange Texte darüber was ein Argument ist und wie ein Argument in einen View übergeben wird (meistens mit einer URL), aber wie man dann was damit machen kann, find ich nirgends! Oder ist es so offensichtlich, dass ich das nicht verstehe?
Wäre echt super, wenn Ihr mir helfen könntent