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
5
A
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
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
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? –
Tak, nie wszystkie cztery razem. – Sachith