代码之家  ›  专栏  ›  技术社区  ›  mrateb

yii2验证空数组(空数组)

  •  1
  • mrateb  · 技术社区  · 6 年前

    public $selling_price;
    public $numbers;
    public $inventory_factor;
    
    public function rules() {
        return [
            ['selling_price'], 'integer'],
            [['inventory_factor'], 'safe'],
            ['numbers', 'each', 'rule' => ['integer']],
    }
    

    {
      "selling_price": 2200,
      "numbers": [null]
    }
    

    使用vardumper,将数字数组

    [
        0 => null
    ] 
    

    2 回复  |  直到 5 年前
        1
  •  1
  •   ajmedway    6 年前

    查看了核心验证器的特殊主题后,我发现在 each validator下,它显示:

    因此,相应地,您需要调整您的规则,如下所示。

    ['numbers'、'each'、'rule'=>['integer'、'skiponEmpty'=>false]],
    
    
    

    现在,您的数字验证程序将不会对数组中的空值视而不见-如果它发现任何空值或非整数值,验证将失败。

    验证器显示:

    规则:指定验证规则的数组。数组中的第一个元素指定验证程序的类名或别名。数组中其余的名称-值对用于配置验证器对象。

    此外,对于yii \validator \eachvalidator,它扩展了yii \验证器\验证器它有财产$skipOnEmpty,默认为true以下内容:

    $skiponEmpty公共财产 -如果属性值为空或空字符串,是否应跳过此验证规则。

    public布尔值$skiponEmpty=true

    因此,相应地,你需要调整你的规则如下。

    ['numbers', 'each', 'rule' => ['integer', 'skipOnEmpty' => false]],
    

    现在您的验证器numbers不会对数组中的空值视而不见-如果它发现任何空值或非整数值,验证将失败。

        2
  •  1
  •   Janki Rathod    6 年前

    ['numbers'、'integer'、'min'=>0]

    如果该值不为空,则验证该值是否为大于0的整数。普通验证器将$skiponEmpty设置为true。

    参考文献: https://www.yiiframework.com/doc/guide/2.0/en/input-validation

    在这个数据过滤主题中,您可以参考这些