2017-06-05 2 views
0

Gibt es eine Möglichkeit, ein dynamisches Formular mit Laravel und MySQL zu erstellen? Ich versuche, eine Form zu bauen, und fügte hinzu, um es verschiedene Felder und Eingabetypen wie:Laravel - dynamisches Formular mit verschiedenen Feldern erstellen

  1. Textfeld Textbereich
  2. Radiobuttons
  3. Kontrollkästchen
  4. Datei

laden und so weiter. Ich denke an etwas ähnlich Schwerkraftformen. Der Benutzer würde das Formular anpassen, indem er angibt, welche Felder obligatorisch, optional oder nicht verfügbar sind.

Was ich bisher erreicht habe, ist die Felder in der Datenbank normalerweise zu erstellen, eine andere Tabelle für ihren Status als obligatorisch, optional oder aus und für die entsprechende Anzeige verantwortlich zu haben.

Dies funktioniert normalerweise ohne irgendein Problem. Ich versuche jedoch, es dynamischer zu gestalten, indem ich eine Art generischer Art definiere, um zukünftige Formulare zu erstellen, ohne für jedes in der Datenbank ein Feld erstellen zu müssen. Bedenken Sie, dass die Felder jetzt nur Textfelder sind.

Würde MySQL helfen, solche Formulare zu erstellen, oder müsste ich etwas wie MongoDB verwenden?

+1

Die Datenbank-Engine macht keinen Unterschied. Der einzige Unterschied besteht darin, wie Sie die Daten in der von Ihnen gewählten Suchmaschine strukturieren. – Atli

+0

@Atli Irgendwelche Ideen wie kann ich die Daten strukturieren? – omarsafwany

Antwort

0

Das Wesen der MySQL ist statisch: Sie Sachen speichern, beharrlich ;-)

Wenn ich dieses Recht erhalten Sie Benutzer möchten ein Formular erstellen, unter Verwendung einer Form, die eine beliebige Anzahl von Eingängen haben und Typen, und speichern Sie es dann für die spätere Verwendung.

Mein Tipp: Verwenden Sie VueJS für die dynamische Form - es ist perfekt für so etwas! Wenn der Benutzer das Formular erstellt hat, speichern Sie den vollständigen HTML-Code als ausgeblendeten Blob/Text in einer einzelnen Spalte oder Verwenden Sie ein benutzerdefiniertes JS-Objekt, das alle ausgewählten Optionen speichert. Etwas wie folgt aus:

{ 
    field1: { 
     type: text, 
     placeholder: name, 
     value: '', 
    }, 
    field2: { 
     type: textarea, 
     placeholder: 'address', 
     style: 'width: 50%' 
    } 
} 

usw.

Auf diese Weise ist es einfach abrufen und zu verwenden (a la Gravity Forms) + mit ein wenig Arbeit können Sie es sogar wieder haben laden in Ihrer benutzerdefinierten VueJS Formularassistenten damit der Benutzer es später bearbeiten kann.

Verwandte Themen