Próbuję zwalidować formularz przygotowany pod wielojęzyczność
Zatrzymałem się w momencie, gdzie użytkownik wypełniając formularz nie chce dodać wersji w danym języku, tj. pozostawia te pola puste.
Czyli dane lecą np. takie:
Kod
lorem[1] = 'test';
ipsum[1] = 'test2';
lorem[2] = '';
ipsum[2] = '';
ipsum[1] = 'test2';
lorem[2] = '';
ipsum[2] = '';
Z dokumentacji laravel wyczytałem, że jest możliwość wymuszenia uzupełnienia pola w przypadku, gdy inne pole zostało uzupełnione.
required_with_all:foo,bar,...
Poniżej przedstawiam mój sposób tworzenia tablicy do walidacji
$langs = [1, 2] foreach($langs as $lang) { $validator['lorem['.$lang.']'] = "required_with_all:ipsum[$lang]|min:3"; $validator['ipsum['.$lang.']'] = "required_with_all:lorem[$lang]|min:3"; } $this->validate($request, $validator);
Jeszcze kilka przykładów poprawnej walidacji:
Kod
lorem[1] = 'test';
ipsum[1] = 'test2';
lorem[2] = '';
ipsum[2] = '';
ipsum[1] = 'test2';
lorem[2] = '';
ipsum[2] = '';
Kod
lorem[1] = 'test';
ipsum[1] = 'test2';
lorem[2] = 'test3';
ipsum[2] = 'test4';
ipsum[1] = 'test2';
lorem[2] = 'test3';
ipsum[2] = 'test4';
Kod
lorem[1] = '';
ipsum[1] = '';
lorem[2] = 'test3';
ipsum[2] = 'test4';
ipsum[1] = '';
lorem[2] = 'test3';
ipsum[2] = 'test4';
oraz niepoprawnej:
Kod
lorem[1] = '';
ipsum[1] = '';
lorem[2] = '';
ipsum[2] = '';
ipsum[1] = '';
lorem[2] = '';
ipsum[2] = '';
Kod
lorem[1] = 'test';
ipsum[1] = '';
lorem[2] = '';
ipsum[2] = '';
ipsum[1] = '';
lorem[2] = '';
ipsum[2] = '';
Kod
lorem[1] = 'test';
ipsum[1] = '';
lorem[2] = 'test3';
ipsum[2] = 'test4';
ipsum[1] = '';
lorem[2] = 'test3';
ipsum[2] = 'test4';