选择字段的Yii2验证规则

时间:2018-03-15 21:45:11

标签: forms yii2 yii2-validation

我有一个模型,例如SomeForm。有一个领域。该字段包含一系列选定的选项。是否可以为此字段编写规则以检查选择了多少项?我需要写一个条件,用户必须检查最少2个选项和最多5个。

我尝试过类似的东西,但它不起作用(如果选择了至少一个选项,则可以提交表单)

<div>
  <input id="number1">
  <select id="operator">
    <option>+</option>
    <option>-</option>
    <option>*</option>
    <option>/</option>    
  </select>
  <input id="number2">
  <button type="button" id="equals">=</button>
  <span id="output"></span>
</div>

1 个答案:

答案 0 :(得分:1)

是的,你可以,但是你在$params的最后一个条件elseif (count($params)<2)而不是$params数组中有一个错误的变量,即$this->ingredients。而且您不需要进行第一次检查,将属性添加到所需规则就足以检查提交时是否为空。

将验证功能更改为

public function checkIsArray( $attribute , $params ) {

    if ( count ( $this->ingredients ) > 5 ) {
        $this->addError ( $attribute , "Choose No more than 5" );
    } elseif ( count ( $this->ingredients ) < 2 ) {
        $this->addError ( $attribute , "Choose No less than 2" );
    }
}

我刚在使用 kartik\Select2 multiselect发布之前对其进行了测试,它运行得很好,但是如果它仍然反应相同,则需要添加 controller/action 代码希望它能帮到你。