2016-06-21 36 views
5

Quando un messaggio di riempimento utente (area di testo) non può riempire i valori di data, ora, luogo.
Questi tre campi prenderanno in considerazione solo quando il messaggio è vuoto e tutti e tre i campi sono riempiti.
Come fare ciò utilizzando la convalida del modulo Laravel? È possibile definire queste logiche nel metodo delle regole della richiesta?
Sono nuovo per Laravel.
Grazie in anticipoLaravel Convalida modulo con operatori logici

This is my form

+2

Quindi si desidera che il campo del messaggio sia riempito dall'utente o solo quei tre campi. Ma non tutti e quattro insieme? Qualcuno ha bisogno di essere compilato? –

+0

Sì, non tutti e quattro insieme. – Sachith

risposta

4

È possibile raggiungere questo (lato server) utilizzando le regole di convalida condizionali:

  • required_if: anotherfield, valore, ...
  • required_unless: anotherfield, il valore , ...
  • required_with: foo, bar, ...
  • required_with_all: foo, bar, ...
  • required_without: foo, bar, ...
  • required_without_all: foo, bar, ...

direi per il vostro caso:

  • data è necessaria a meno che il messaggio è compilato
  • tempo è richiesto a meno che il messaggio non sia stato compilato
  • luogo è necessaria a meno che il messaggio è riempito in
  • messaggio è richiesto senza tutti data, ora, luogo

regole catena se ne avete bisogno, separandoli con tubo

segue un esempio di snippet. Utilizzare questo metodo all'interno del vostro ExampleFormRequest estendere Request

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    $rules = []; 

    switch ($this->method()) { 
     case 'PATCH': 
     case 'PUT': 
     case 'POST': 
      $rules = [ 
       'date' => 'required_without:message', 
       'time' => 'required_without:message', 
       'venue' => 'required_without:message', 
       'message' => 'required_without_all:date,time,venue', 
       ]; 
      break; 
     default: 
      // Perform no alteration to rules 
      break; 
    } 

    return $rules; 
} 

Checkout documentation here

+1

puoi pubblicare un codice di esempio per farlo? – Sachith

+0

Codice di esempio aggiunto – alariva

+1

InvalidArgumentException in Validator.php line 2999: La regola di convalida required_unless richiede almeno 2 parametri. – Sachith

2

Come ha detto la regola di convalida come il campo 'Messaggio' o tutti questi tre ('data', 'tempo',' luogo ") devono essere riempiti. Quindi le regole dovrebbero apparire come sotto.

$rules = [ 
      'date' => 'required_with_all:time,venue|required_without:message', 
      'time' => 'required_with_all:date,venue|required_without:message', 
      'venue' => 'required_with_all:date,time |required_without:message', 
      'message' => 'required_without_all:date,time,venue', 
      ]; 
+0

sì, questo è quello che stavo cercando. – Sachith

Problemi correlati