Yii2: règle de validation pour le tableau?
Je peux définir une règle pour un unique entier comme ceci:
[['x'], 'integer']
Est-il possible de dire que x est un tableau d'entiers? Par exemple:
[['x'], 'integer[]']
Et pourrais-je spécifier les valeurs valides dans le tableau?
Mise à jour: à Partir de Yii version 2.0.4 nous avons eu un peu d'aide. Voir cette réponse.
- Est-ce pour les modèles de règles? Vous ne pouvez pas vraiment les enregistrer dans un tableau, peut-être une sérialisation d'elle. Voulez-vous essayer de vous faire un peu plus clair?
- Dans mon cas, c'est le modèle pour un formulaire qui contient des cases à cocher qui sont chargées dans un tableau (avec $modal->load(Yii::$app->request->post()). Il n'est donc pas pour une ActiveRecord objet.
- Asraf Vous pouvez stocker un tableau si vous utilisez mongodb
Vous devez vous connecter pour publier un commentaire.
À partir de la version 2.0.4 il y a le nouveau EachValidator qui le rend plus facile maintenant:
Cela devrait être suffisant. Si les valeurs doivent être également vérifié que vous pourriez utiliser (avec les "dans" validateur qui est en fait le RangeValidator):
Toutefois, vous pouvez utiliser ce "dans" validateur aussi directement. Et c'est possible avec Yii versions avant 2.0.4:
L'utilisation de
'strict' => true
serait probablement n'a pas de sens dans le cas où les données sont envoyées par le client et est fixé avec Modèle->load(). Je ne suis pas tout à fait sûr, mais je pense que ces valeurs sont envoyées comme des chaînes de caractères (comme "5" au lieu de 5).Vous pouvez avoir besoin de créer des règles de validation comme ci-dessous:
Puis dans votre modèle, impelement
checkIsArray
:Vous pouvez faire tout ce dont vous avez besoin dans une règle de validation personnalisée.
Comme emte mentionné sur commentaire, vous pouvez également utiliser inline validateur avec fonction anonyme comme ci-dessous:
is_array($this->$attribute)
. Cette utile si vous avez plusieurs attributs dans la présente règle.Si vous avez besoin de vérifier à l'encontre de gamme spécifique pour chaque élément du tableau
plus
ou