select Viewhelper wird nicht befüllt

  • dani2k6 dani2k6
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    20. 05. 2011, 08:09

    Hallo liebes Forum,

    Ich verzweifle gerade daran, dass in meinem Template der select Viewhelper nicht befüllt wird. Dieser ist leer.
    Ich übergebe in der newAction eine Ansammlung von AbstractEntity Objekten als Array an das Template:
    (betreffendes Objekt: parentObject)

    1. public function newAction(Tx_Crc806dbApp_Domain_Model_Metadata $newMetadata = NULL) {
    2.  
    3. $parentObjects = $this->metadataRepository->findAll();
    4. $this->view->assign('parentObjects',$parentObjects );
    5.  
    6. $keywords = $this->keywordsRepository->findAll();
    7. $this->view->assign('keywords',$keywords );
    8.  
    9. $this->view->assign('newMetadata', $newMetadata);
    10.  
    11. }

    Im Template kann ich die properties der Objekte parentObject wunderbar mit dem for-Viewhelper ausgeben:

    1. <f:for each="{parentObjects}" as="parentObject">
    2. <tr>
    3. <td><f:link.action action="show" arguments="{parentObject : parentObject}"> {parentObject.identifier}</f:link.action></td>
    4. </tr>
    5. </f:for>

    Mein select Viewhelper bleibt jedoch leer:

    1. <f:form.select property="parentObject" options="{parentObjects}" optionLabelField="identifier" optionValueField="uid" multiple="multiple" style="width: 30em"/>

    Jemand ne Idee wo der Fehler liegen könnte ?

    Viele Grüße
    Daniel


  • 1
  • dani2k6 dani2k6
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    20. 05. 2011, 10:18

    Problem solved...
    I did not pass the arguments from the template to the partial...

  • Bluespuke Bluespuke
    Sternenflotten-Admiral
    0 x
    131 Beiträge
    12 Hilfreiche Beiträge
    02. 04. 2012, 16:00

    [quote="dani2k6"]
    Problem solved...
    I did not pass the arguments from the template to the partial...
    [/quote]
    [ironie]Vielen herzlichen Dank für diese ausfühliche Lösung, diese war sehr hilfreich für alle die ein ähnliches Problem haben!
    [/ironie]

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    02. 04. 2012, 16:28

    wenn man mit Partials arbeitet muss man die Variablen, die man in diesen Verwenden möchte auch an das Partial übergeben:

    1. <f:render partial="Product/Properties" arguments="{product:product}" />

    Will man mehrere Variablen übergeben, muss man diese mit Komma trennen.

    1. <f:render partial="Product/Properties" arguments="{product:product, colors:colors}" />

  • dani2k6 dani2k6
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    02. 04. 2012, 16:29

    hmm ok das war vielleicht ein wenig knapp.....

    In meinem Controller weise ich dem Template das Objekt über folgende Codezeile zu:

    1. $this->view->assign('parentObjects',$parentObjects );

    Nun kann ich in meinem New.html template file mit Hilfe des Fluid Viewhelpers das Objekt
    folgendermaßen ansprechen

    1. <f:for each="parentObject" as="parentObjects">
    2. {parentObject.property} // property durch die Eigenschaft eures Domänenobjekts ersetzen
    3. </f:for>

    Nun hatte ich einen Teil meines Templates in ein Partial ausgelagert und wollte innerhalb des
    Partials auf das Domänenobjekt zugreifen
    Dazu muss man unbeding die Objekte als Parameter vom Template in das Partial übergeben:

    1. <f:render partial="Metadata/properties" arguments="{parentObjects}" />

    Ich hoffe das war verständlich

    Liebe Grüße

  • eddy eddy
    Sternenflotten-Admiral
    0 x
    177 Beiträge
    0 Hilfreiche Beiträge
    11. 03. 2013, 17:14

    Superklasse,

    hänge an diesem Problem mit nicht befüllten selectboxen nun schon tagelang und endlich hier der entscheidende Hinweise mit den arguments in den partials.

    Auf der anderen Seite ist es sehr nervtötend, zur Recherche nicht auf aktuelle Quellen zugreifen zu können. Viele Infos existieren zwar im Netz, aber oft veraltet oder widersprüchlich.

    Nicht mal in der Fluid Viewhelper Reference kommt z.B. dieses Problem hier zur Sprache (man möge mich korrigieren, wenn dem doch so ist). #paralyzed#

    Eddy

  • harald1972 harald197...
    Sternenflotten-Admiral
    0 x
    198 Beiträge
    13 Hilfreiche Beiträge
    14. 03. 2013, 12:13

    Jeder View müssen alle Parameter übergeben werden, die sie irgendwie verwenden soll.
    (Ist ja irgendwie logisch)
    D.h. auch (und vor allem) dann wenn z.B. ein Partial ein weiters Partial aufruft.

    Beim ersten Mal hab ich auch lang gebraucht.
    Inzwischen brauch ich nur noch lange, um die Stelle zu finden, bei der ich diese Übergabe vergessen habe.
    Es gilt ja das Paradigma des Durchreichens von Objekten, Attributen, Methoden, irgendwie von allem.
    Auf dem ganzen Weg, den die Objekte zurücklegen müssen, geht schonmal was verloren. ;)

    Also: Wenn mal das Select leer ist, oder sonst irgendein Feld, den ganzen Weg absuchen, den der Inhalt gehen muss!

    Gruß Harald

  • 1