Zum Inhalt springen

Zugriff auf Unterobjekte mit "arguments"

Erstellt am 7. Juni 2013 · 8 Antworten · letzte Antwort am 7. Juni 2013

Tags: Fluid, ViewHelper, Frage

tvnetzwerk ·

Ich habe ein Hauptobjekt und ein Unterobjekt.

Hauptobjekt: Auto
Unterobjekt: Marke (z.B. Golf)

Beide sind mit m:n verknüpft. Das Hauptobjekt hat bestimmte Eingeschaften, die auch für das Unterobjekt gelten. z.B. die Farben rot, grün, blau.

Angenommen ich habe zwei Plugins: Eins für das Auto (Farben, Marken, Bildergalerie...),
und eins für die Marke: (Farben, Bildergalerie usw.)

Nun sollte es doch möglich sein mit link.action zur Marke zu springen, je nachdem wo ich draucfklicke soll auf einer anderen Seite (Plugin für die Marke) alle Elemente die entweder rot, grün oder blau sind entsprechend gefiltert zu sehen sein.

Viele Varianten probiert, im Moment das:

<f:for each="{autos.marken}" as="marke">
   <f:link.action pageUid="xxx" controller="Autos" action="list" arguments="{marke : marke.uid}">los!</f:link.action>
</f:for>

Liege ich falsch?

Vielen Dank und beste Grüße
Carsten

Unbekannter Benutzer ·

Das sieht eigentlich gut aus, was passiert denn?

Btw. eigentlich sollte das hier auch funktionieren:

<f:for each="{autos.marken}" as="marke">
   <f:link.action pageUid="xxx" controller="Autos" action="list" arguments="{marke : marke}">los!</f:link.action>
</f:for>

Fluid wird selbst dafür sorgen dass nur die UID der Marke übertragen wird.

Unbekannter Benutzer ·

Ah, mmm in deinem Template ist auch nicht der "New Auto" Link drin. Möglicherweise ist das nicht das richtige Template oder so? Hast Du mal versucht den Cache zu löschen oder das ganze Template geleert. Wenn sich dann auch nichts ändern bist du im falschen Template.

Du kannst auch mal debuggen:

<f:debug>{autos.marken}</f:debug>

und in der for each Schleife irgendwas statisches ausgeben wie:

<p>Ausgabe vor der Schleife</p>
<f:for each="{autos.marken}" as="marke">
   Eintrag! <f:link.action pageUid="xxx" controller="Autos" action="list" arguments="{marke : marke}">los!</f:link.action>
</f:for>
<p>Ausgabe nach der Schleife</p>
tvnetzwerk ·

Danke, das war auch nur ein Auschnitt aus dem Template. ;-)

Die Schleife war wohl nicht an der richtigen Stelle.
Jedenfalls sieht das schon sehr viel besser aus (Screenshot), auch die weiterleitung an die andere Seite funktioniert. Super!

Einziges Problem: wenn auf den Link klicke, sehe ich die ganze Liste - also alle Marken. Da werden die Parameter wohl nicht richtig weitergereicht.

Beste Grüße
Carsten

screen2.jpg

Unbekannter Benutzer ·

Da fehlt mir jetzt etwas das Hintergrundwissen deiner Extension.

Welcher Controller/Action ist denn das da? Und wohin verlinkst du? Selber Controller/Action? Wenn nicht ist dann beides im selben Plugin konfiguriert?

tvnetzwerk ·

Diese Extension ist mit dem Ext-Buider in 5 Min. gebaut worden und nur dazu da, um die Hintergründe zu lernen. Tatsächlich soll daraus dann eine richtige Extension entstehen.

Es sind Standard-Controller-Aktionen:

2 Models: Auto und Marke
Jeweils 2 Plugins auf unterschiedlichen Seiten untergebracht: Auto und Marke
Standard-Actions: List und Show

Verlinkt wird von Auto nach Marke, die Eigenschaften sollen von einer Seite zur anderen übergeben werden. (arguments)

Das wars schon.. ;-)

Unbekannter Benutzer ·

Gibt es ein oder zwei Plugins? Also nicht Plugininstanzen auf der Seite sondern wieviele Plugins deine Extension bereitstellt? Wenn es zwei unterschiedliche sind dann musst du auch das Plugin beim link.action viewhelper angeben.

tvnetzwerk ·

Es sind zwei Plugins.

Das erste: Auto=>list,show
Das zweite: Marke=>list,show

<f:for each="{autos.marken}" as="marke">
     <f:link.action pageUid="xxx" controller="Autos" pluginName="Marke" action="list" arguments="{marke : marke}">los!</f:link.action>
</f:for>

Vielleicht so?