2016-08-03 27 views
0

Ich eine Umfrage Builder mit mehreren erlaubt Fragetypen implementieren. Diese Typen sind:‚required_if‘ Validierung neben Datenbankprüfung in Laravel 5

  1. Einzel Wahl
  2. Multiple-Choice-
  3. Sternbewertung

Die 1. und 2. erfordern mehrere mögliche Antworten von einem Benutzer gegeben werden , während die 3.erfordert keine möglichen Antworten auf alle. Diese Anforderungen werden als true/false Werte in question_types.multiple_answers Spalte gespeichert.

Ich brauche eine Gültigkeitsregel, dass Wille:

erfordernanswers[] Array in der Anfrage vorhanden sein, nur, wenn die ausgewählte question_type'smultiple_answers Wert entspricht auf true in der Datenbank gesetzt. Hier


ist eine Darstellung, was ich versuche zu erreichen:

...->validate($request, [ 
    'answers' => 'require_if:type,...' // <-- if 'type' has 'multiple_answers' set to true in database 
]); 
+0

http://stackoverflow.com/questions/37935804/laravel-form-validation-with-logic-operators/38141214#38141214 diese Ihnen helfen könnte .. – Avishek

+0

@Avishek danke, aber das ist eine andere Fall. Ich muss ** eine Bedingung in der Datenbank überprüfen und Felder auf dieser Basis ** verlangen. –

+0

bedeutet dies, dass Sie 'Pflichtfelder' auf Basis der' not null'-Spalten der Datenbank hinzufügen möchten. – Avishek

Antwort

1

Sie können conditional validation rules erstellen zu tun, was Sie wollen. Die als zweiter Parameter angegebene Regel wird nur ausgewertet, wenn die als dritter Parameter angegebene Funktion true zurückgibt.

$v->sometimes('answers', 'required', function($input) { 
    // check database and return true if multiple_answers is set for the type ($input->type) 
});