2016-08-10 26 views
6

Mam zdefiniowane tablicęlaravel in_array reguły poprawności

$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00'); 

Teraz chcę do sprawdzania poprawności danych przed zapisaniem do bazy, że jeżeli dana wejściowa pasuje do jednej z wartości powyższej tablicy. W tym celu robię

$this->validate($request, [ 

     'field' => 'required|in_array:$this->allslots', 
    ]); 

Ale to zwraca błąd sprawdzania poprawności dla każdego wejścia. Jak mogę to zrobić?

Odpowiedz

12

Spróbuj tego:

'field' => 'required|in:' . implode(',', $this->allslots), 

robi to daje oczekiwanego rezultatu?

+0

Tak, więc chciałem podziękować .. dużo .. –

+1

Co jeśli jeden z elementów tablicy zawiera przecinek? To naprawdę jesteś pieprzona. – kjdion84

+0

@ kjdion84 powinieneś użyć "przykręcony" zamiast f.2399. to jest niegrzeczne. btw, jeśli ma przecinek, to zobacz moje rozwiązanie. –

2

To nieco więcej niż semantyczne przyjętym odpowiedź:

use Illuminate\Validation\Rule; 

$request->validate([ 
    'field' => [ 
     'required', 
     Rule::in($this->allslots) 
    ] 
]); 
Powiązane problemy