Frage

In meiner Anwendung erlaube ich Benutzer ein Formular zu erstellen, mit einem beliebigen HTML-Formularfeld sie wollen (zum Beispiel Texteingabe, Textfeld, wählt, etc.). Ich mag den Benutzern die Möglichkeit geben, für jedes Feld zu definieren 0 oder mehr kumulative Validierungsregeln (es kann bis zu 25 verschiedenen Validierungsregeln wird). Wie soll ich dieses Modell?

Hier ist eine mögliche Lösung:

============================================================
| Id | FieldId | ValidationRuleType | ValidationRuleDetail |
============================================================
| 1  | 25      | Required           | NULL                 |
------------------------------------------------------------
| 2  | 26      | Minimum Length     | 5                    |
------------------------------------------------------------
| 3  | 26      | Maximum Length     | 12                   |
------------------------------------------------------------
...

Das oben gezeigte Design verwenden, vielleicht in den meisten Fällen könnte die ValidationRuleType nur sein „Regex“ (oder ein Wert aus einer Nachschlagtabelle, wie ValidationRuleTypeId = 1 für „Regex“), und verwenden Sie die folgenden für ValidationRuleDetail:

// Added bonus of this approach is that users who know regex could define their own patterns
.{1,}  // Any character, 1 or more times. Use for "Required"
.{5,}  // Any character, 5 or more times. Use for "Minimum Length = 5"
.{,12} // Any character, 12 or less times. Use for "Maximum Length = 12"

Das Problem ist, dass diese Lösung EAV ist. Das ist eine schlechte Sache, nicht wahr?

Eine andere mögliche Lösung:

=============================================================
| Id | FieldId | Required | Minimum Length | Maximum Length |
=============================================================
| 1  | 25      | TRUE     | NULL           | NULL           |
-------------------------------------------------------------
| 2  | 26      | NULL     | 5              | 12             |
-------------------------------------------------------------
...

Ist das besser? Ich bin in Konflikt gerieten, welcher Ansatz zu verwenden. Jede Führung ich bekommen kann, wird sehr geschätzt.

War es hilfreich?

Lösung

Die Antwort hängt ganz davon ab, wie Sie die Validierungsregeln arbeiten möchten. Wenn alles, was Sie haben wollen erforderlich / min / max, dann sollten sie nur Spalten für das Feld (letzte Option) sein. Wenn eine Gültigkeitsregel eine bestimmte Gruppe von dynamischen Regeln definiert, sollen sie in ihrem eigenen Tisch und eine Zuordnung zwischen einer Gültigkeitsregel und dem Feld ID sollte vorhanden sein (Sie sollen die gleiche Feld ID auf mehrere Validierungsregeln in diesem Fall zur Karte der Lage sein, ). Dann sind Sie Abfrage für die Felder, verbinden sie mit der Zuordnungstabelle und kommen Sie mit den Regeln, die Regeln zu diesem Bereich zu übernehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top