Ich habe gerade ein Jessod-Projekt (keine Datenbank) mit yesod init
initialisiert.
Mein HomeR
GET-Handler sieht folgendermaßen aus:
Wenn yesod devel
verwendet wird, kann ich auf die Standard-Homepage unter http://localhost:3000/
zugreifen.
Wie kann ich den oben genannten Handler ändern, um einen HTTP GET-Abfrageparameter wie id=abc123
beim Zugriff auf diese URL abzurufen (und anzuzeigen):
http://localhost:3000/?id=abc123
Hinweis: Diese Frage wurde im Q & A-Stil beantwortet und zeigt daher absichtlich keine Forschungsanstrengungen!
Ich werde zwei verschiedene Methoden zeigen, um dies zu erreichen. Für beide müssen Sie diesen Code zu Ihrer Vorlage hinzufügen, z. in homepage.hamlet
:
Beachten Sie, dass beim Zugriff auf die URL nicht garantiert ist, dass ein id
-Parameter vorhanden ist. Daher ist der Typ, der sich aus beiden Methoden ergibt, Maybe Text
. Eine detaillierte Beschreibung der Template-Parameter finden Sie in Shakespeare-Vorlagen .
Methode 1: lookupGetParam
Das geht am einfachsten mit lookupGetParam
so:
Bei Verwendung der Standardeinstellung von yesod init
muss idValueMaybe
sowohl in getHomeR
als auch in postHomeR
definiert werden, wenn idValueMaybe
in der Vorlage verwendet wird.
Ihr HomeR
GET-Handler könnte wie folgt aussehen:
Methode 2: reqGetParams
Anstatt die Abfrageparameter nach Namen zu suchen, können Sie auch eine Liste von Abfrageschlüssel / -wertpaaren mithilfe von reqGetParams
abrufen. Dies kann in bestimmten Situationen, z.B. wenn Sie nicht alle möglichen Schlüssel im Voraus wissen. Mit der standardmäßigen Funktion lookup
können Sie leicht einen bestimmten Schlüssel darin suchen Liste.
Der relevante Teil Ihres Codes könnte wie folgt aussehen:
%Vor% Ihr getHomeR
könnte so aussehen:
Tags und Links haskell yesod query-parameters