2 votes

(Yii2) Validation correcte de RangeValidator

Dans app/models/Model ceci valide

//simulating incorrect user input
//$model->status='some-string';

public function rules()
{
    return [
        ['status', 'in', 'range' => [0]], //asserts true (why?)
      //['status', 'in', 'range' => [0], 'strict' => true], //asserts false (correct)

    ];
}

EDIT : J'ai mis à jour cette question pour refléter les nouvelles connaissances.

0voto

Dani Points 685

Veillez à définir votre constante dans la classe du modèle.

 class model extends activeRecord {
const STATUS = 0;
public function rules()
{
    return [
        [['status'], 'in', 'range' => [self::STATUS]],
    ];
}
}

Essayez ceci, ça marche pour moi.....

0voto

csminb Points 5

Est très probablement vide au moment de la validation, les vérifications internes donnent quelque chose du genre :

// non-strict:
null == 0  // this is true

// strict:
null === 0 // this is false

Il en va de même pour la chaîne vide, voir Question connexe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X