Wie erstellt man mehrere benutzerdefinierte Felder in Play Framework?

8

Ich versuche, mehrere benutzerdefinierte Felder zu erstellen.

Verwenden Sie diesen Artikel als Referenz.

Nach dem Erstellen von MyHelpers .

%Vor%

Ich importiere auf meinem .scala.html

%Vor%

Dann magisch wenn ich es mache

%Vor%

Es wird meinen Konstruktor für MyHelpers

verwenden

Aber wie würde ich mehrere Konstruktoren erstellen, so könnte ich verschiedene Eingabearten erstellen, wie:

%Vor%

Wie würde ich das umsetzen?

Erstens, ich bin neu in Scala (habe schon eine ganze Weile Bücher und Artikel gelesen und Sachen über Scala geladen, aber kaum etwas codiert). Es tut mir leid für eine solche Frage, aber scala macht es schwer, Play zu lernen, es sieht so aus, als müssten Sie Scala vorher meistern, damit Sie Play aufnehmen oder sogar verstehen können, wie es aufgebaut ist. Dokumentation hilft in diesen Fällen nicht allzu sehr.

    
mrcaramori 21.06.2013, 20:12
quelle

2 Antworten

9

Eine andere Möglichkeit besteht darin, mehrere Felder in einem Scala-Objekt (einer anderen Datei) zu erstellen und dieses Objekt dann in Ihre Ansichten zu importieren. Der Rest wird leicht zu folgen sein.

Zuerst: Erstellen Sie eine Ansicht für das Feld, das Sie erstellen möchten. Nennen wir es textinputgroup.scala.html

Es wird diesen Code enthalten

%Vor%

Dann: Erstellen Sie Ihren Objekthelfer. Nennen wir es bootstrap.scala und fügen Sie die Felder ein, die Sie erstellen möchten. (Sie können bootstrap.scala und textinput.scala.html im selben Verzeichnis unter dem Verzeichnis 'views' ablegen)

%Vor%

Und schließlich: Importieren und verwenden Sie dieses Objekt in Ihren Ansichten.

%Vor%

Ich habe einige Beispiele in diesem Repository hinzugefügt, um mehrere Felder zu erstellen Verwenden von Bootstrap (multipleFieldConstructor) und Semantic-UI (semanticuiformhelper) Frameworks. Schau sie dir an.

    
Firas 21.10.2013 12:07
quelle
8

Die Antwort hängt davon ab, was Sie unter "verschiedene Eingabetypen" verstehen. Wenn Sie möchten, dass Ihr username -Feld wie ein normales Textfeld und Ihr birth so etwas wie eine Datumsauswahl ist, dann müssen Sie sich nicht mit Feldkonstruktoren herumärgern, Sie brauchen vielleicht nur einen benutzerdefinierten "Eingabehelfer" ".

Die Eingabehilfen sind die Vorlagen, die das HTML-Eingabeelement selbst definieren. Im Fall eines Datums-Pickers würden Sie das Eingabe-Textfeld haben und es könnte auch die kleine Kalendergrafik enthalten, um den Kalender oder etwas zu öffnen.

Der Feldkonstruktor ist der gesamte HTML-Code, der das HTML-Eingabeelement umgeht, das der Helper generiert hat. Dazu gehört auch div s, damit es der Struktur Ihrer Seite entspricht. Außerdem wird Hilfs- / Fehlertext für das Feld generiert.

Eingabehilfen

Meine Vermutung ist, dass das, was Sie wirklich anpassen möchten, ein Eingabehelfer ist. Wenn @inputDate nicht tut, was Sie brauchen, können Sie Ihre eigenen erstellen. Sehen Sie sich die eingebauten Eingabehilfen von Play auf GitHub für Beispiele an:

Ссылка

Feldkonstruktoren

Wenn Sie mehrere Feldkonstruktoren haben wollen, dann ist das auch möglich. Sie können tatsächlich beliebig viele definieren und sie pro Feld auswählen. Auf derselben Dokumentationsseite, die Sie verlinkt haben, wird eine alternative Möglichkeit zum Definieren des Feldkonstruktors direkt in Ihrer Ansicht angezeigt.

%Vor%

Dies wird Ihr Standard-Feldkonstruktor sein (weil er mit @implicit beginnt? Ich verstehe diesen Teil nicht vollständig). Um einen zweiten zu definieren, kopieren Sie einfach diese Zeile, aber rufen Sie die Variable etwas anderes auf. Dies ist etwas, was ich in einem Projekt verwende:

%Vor%

Und um es zu benutzen:

%Vor%

Hoffe, das hilft.

    
estmatic 21.06.2013 22:16
quelle