【问题标题】:Yii2 conditional validation rule on basis of minimum valueYii2 基于最小值的条件验证规则
【发布时间】:2017-04-24 20:35:54
【问题描述】:

我在 pricemark 和 price 表单中有 2 个字段,当用户选择 pricemark 值 = other 时,用户不能输入小于 250 的值。我需要在 yii2 中为其设置验证规则,但它不起作用。这是我的代码

        ['price', 'min' => 250, 'when' => function ($model) {
            return $model->priceMark == 'other';
        }],

【问题讨论】:

  • 你确定它不起作用吗?或者它可能在服务器端工作,但在客户端,你想要两者?
  • 目前它不工作,我主要是在寻找服务器端,但如果能够让它在客户端也能工作,那就太好了
  • 所以只是说清楚 - 它在服务器端工作吗?
  • 不,它不工作,你的代码看起来没问题吗?
  • 哦,对了——有错误,让我准备正确的答案。

标签: php validation yii yii2


【解决方案1】:

试试这个:

['price', 'number', 'min' => 250, 'when' => function ($model) {
    return $model->priceMark == 'other';
}, 'whenClient' => 'function (attribute, value) {
    return $("<field>").val() == "other";
}'],

其中&lt;field&gt;priceMark 元素标识符,类似于其类或ID(即#price_pricemark,如果模型名称为Price)。

【讨论】:

    【解决方案2】:

    我真傻,我没有指定验证的属性类型。正确的代码应该是

            ['price', 'integer', 'min' => 250, 'when' => function ($model) {
                return $model->priceMark == 'other';
            }, 'whenClient' => "function (attribute, value) {
                return $('#uploadform-pricemark').val() == 'other';
            }"],
    

    在价格属性之后看到integer,我错过了它,我还添加了客户端代码,现在也可以正常工作。

    ,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多