[Frage] Form submit geht nicht

  • tom_meier tom_meier
    Sternenflotten-Admiral
    0 x
    187 Beiträge
    2 Hilfreiche Beiträge
    17. 10. 2014, 10:27

    Hallo,

    habe eine Extension gebaut die mehrere Selectfelder hat und einen Submit button.
    im Tepmlate erzeuge ich den Form Tag so:

    <f:form action="list" method="get" noCacheHash="true">

    Auch noCache="true" bringt nichts.

    Wenn ich nun aber auf den Submit button klicke, werde ich nicht zu der list Action weitergeleitet sondern er ruf die gleiche Seite auf. (index) Die List action ist auch in non-cacheable actions eingetragen. Hilft nix. Die list action ist im gleichen Controller.

    Ausserdem werden die hidden Fields in der URL mit angezeigt. Ich weiss steht auf GET. Aber ist das normal? Kann ich das nur per RealUrl entfernen?

    Danke für euere Hilfe

    Tom


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    17. 10. 2014, 10:59

    Versuch mal den Controller noch mit anzugeben:
    <f:form action="list" controller="DeinController" method="get" noCacheHash="true">

    Hidden-Felder werden bei GET immer als querystring angehängt - das ist Standard in HTML und lässt sich nicht umgehen (außer man nutzt POST) ;)

  • tom_meier tom_meier
    Sternenflotten-Admiral
    0 x
    187 Beiträge
    2 Hilfreiche Beiträge
    17. 10. 2014, 11:19

    Hallo toifel,

    hatte ich auch schon versucht. Geht auch nicht. Wenn ich allerdings aus dem Quellcode die Form Action Url kopiere und im Browser aufrufe, ruft er mir die list action auf. Nur fehlen mir dann natürlich die form parameter. Nur mit einem normalen submit geht es nicht.

    Das mit den hiiden fields war mir klar, wollte nur sicherstellen, das es keinen Paramter gibt um dies zu unterbinden.

    Tom


  • 0 x
    21. 10. 2014, 17:10

    Zeig doch am besten mal deine Action und die gesamte Form.
    Dürfte eher helfen als jetzt blind zu raten ;)

  • tom_meier tom_meier
    Sternenflotten-Admiral
    0 x
    187 Beiträge
    2 Hilfreiche Beiträge
    21. 10. 2014, 17:19

    Hallo,

    also:
    [code]

    1. <div class="startform">
    2. <f:form name="index" id="indexform" action="list" controller="car" noCache="0" absolute="0" noCacheHash="1" method="get">
    3.  
    4.  
    5. <f:form.select additionalAttributes="{onChange : 'this.form.submit();'}" value="{request.brand}" class="start select" name="brand" options="{brand}" optionLabelField="label" optionValueField="value" prependOptionLabel="Marke wählen (alle)" prependOptionValue=""/>
    6. <f:form.select additionalAttributes="{onChange : 'this.form.submit();return false;'}" class="start select" name="baureihe" options="{baureihe}" value="{request.baureihe}" optionLabelField="label" optionValueField="value" prependOptionLabel="Modell wählen (alle)" prependOptionValue=""/>
    7. zart}" value="{request.fhzart}" prependOptionLabel="Bauart (alle)" prependOptionValue=""/>
    8.  
    9.  
    10. <f:form.submit class="trefferbutton" name="search" value="Treffer Anzeigen ({count})" />
    11. </f:form>
    [/code]

    Ich glaube aber das, es hier einen Bug gibt. Ich meine man müsste ein hidden Field mit der Action hinterlegen damit das richtig funktioniert.

    VG
    Tom


  • 0 x
    21. 10. 2014, 17:57

    Also ich sehe beispielsweise nicht, dass du Argumente an deine Action übergibst.

    Eventuell macht auch <form NAME="index"> dir Probleme, ich wüsste nicht, wofür man dem Form Tag ein name Attribut geben sollte.

    Controller sind in der Regel Uppercase, aber keine Ahnung ob das hier ein Problem ist.

    Vielleicht ist da was bei, was dir hilft. Ansonsten kannst du auch nochmal extensionName und pluginName ergänzen, falls du da mehrere PI's auf einer Seite hast.

  • 1