Od wersji 2.0.4 istnieje nowa EachValidator co sprawia, że łatwiej teraz :
['x', 'each', 'rule' => ['integer']],
To powinno wystarczyć. Jeśli Należy również sprawdzić wartości można użyć tego (z 'in' validator który faktycznie jest RangeValidator):
['x', 'each', 'rule' => ['in', 'range' => [2, 4, 6, 8]]], // each value in x can only be 2, 4, 6 or 8
Można jednak korzystać z tego „w” walidator również bezpośrednio. I to jest możliwe z wersji 2.0.4 Yii przed:
['x', 'in', 'range' => [2, 4, 6, 8], 'allowArray' => true]
Zastosowanie 'strict' => true
prawdopodobnie nie ma sensu w przypadku, gdy dane są wysyłane przez klienta i ustawiany Model->load(). Nie jestem do końca pewien, ale myślę, że te wartości są wysyłane jako łańcuchy (jak "5" zamiast 5).
Czy to na zasadach modelu? Naprawdę nie możesz przechowywać tablicy, być może serializacji. Czy chcesz postarać się uczynić siebie bardziej klarownym? – casraf
W moim przypadku jest to model dla formularza, który zawiera pola wyboru, które są ładowane jako tablica (z $ modal-> load (Yii :: $ app-> request-> post()). Tak więc nie jest dla ActiveRecord obiekt: – robsch
@Chen Asraf Możesz zapisać tablicę, jeśli używasz ** mongodb ** – verybadbug