2016-06-21 15 views
5

Gdy użytkownik wypełnia wiadomość (textarea), nie może wypełnić wartości daty, czasu i miejsca.
Te trzy pola będą uwzględniane tylko wtedy, gdy wiadomość jest pusta i wszystkie te trzy pola są wypełnione.
Jak to zrobić, używając sprawdzania formularza Laravel? Czy możliwe jest zdefiniowanie tej logiki w metodzie reguły żądania?
Jestem nowy dla Laravel.
góry dziękiWalidacja formularza Laravel z operatorami logicznymi

This is my form

+2

A więc chcesz albo wypełnić pole wiadomości przez użytkownika, albo tylko te trzy pola. Ale nie wszystkie cztery razem? Czy istnieje wymóg posiadania pełnej? –

+0

Tak, nie wszystkie cztery razem. – Sachith

Odpowiedz

4

Można to osiągnąć (po stronie serwera) za pomocą warunkowych reguł walidacji

  • required_if: anotherfield, wartość, ...
  • required_unless: anotherfield, wartość , ...
  • required_with: foo, bar, ...
  • required_with_all: foo, bar, ...
  • required_without: foo, bar, ...
  • required_without_all: foo, bar, ...

powiedziałbym Twoim przypadku:

  • daty jest wymagane, chyba że wiadomości jest wypełniany
  • wymagany jest czas, chyba że komunikat jest wypełniony
  • miejsce jest wymagane, chyba że wiadomość jest wypełniony
  • wiadomości jest wymagany bez wszystkich data, godzina, miejsce

zasady Chain jeśli trzeba oddzielając je rury

następstwem przykładowy fragment. Użyj tej metody wewnątrz ExampleFormRequest rozszerzenie 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; 
} 

Zamówienie documentation here

+1

możesz wysłać przykładowy kod, aby to zrobić? – Sachith

+0

Przykładowy kod został dodany – alariva

+1

Wyjątek InvalidArgumentException w linii Validator.php 2999: Reguła sprawdzania poprawności required_unless wymaga co najmniej 2 parametrów. – Sachith

2

Jak powiedział reguły poprawności jak „Wiadomość” polu lub wszystkie z tych trzech („data”, „czas”,” miejsce ") muszą być wypełnione. Zasady powinny wyglądać jak poniżej.

$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

tak, właśnie tego szukałem. – Sachith

Powiązane problemy