【问题标题】:Making one field required when other fields are empty当其他字段为空时,将一个字段设为必填
【发布时间】:2019-07-23 19:49:26
【问题描述】:

我的网站上有一些字段 (WP ACF),当其他字段不为空时,我需要一个字段 (field_5c66e017f8359)。

谁能帮我写下下面这段代码?

add_filter('acf/validate_value/key=field_5c66e017f8359', 'custom_validate_title', 20, 4);
function custom_validate_title($valid, $value, $field, $input) {
  if (!empty($_POST['acf']['field_5c6d43781bcb1']) ||
  !empty($_POST['acf']['field_5c66e094f835a']) ||
  !empty($_POST['acf']['field_5c66e0d4f835b']) ||
  !empty($_POST['acf']['field_5c66e130f835c']) ||
  !empty($_POST['acf']['field_5c703c1fd5851'])) {
  if (empty($value)) {
  $valid = 'This field is required because you have added a value to some other field';
    }
  }
  return $valid;
}

谢谢!

【问题讨论】:

    标签: php validation if-statement advanced-custom-fields


    【解决方案1】:

    你想要的是一个逻辑蕴涵:如果你想要字段 b 仅在 a 不为空时才需要,那么你有蕴涵 a => b。这转换为 !a 或 b。 所以在 PHP 中,这会给出:

    //if (a => b)
    if (!(!empty(a)) || (!empty(b)))
    

    可以简化为

    if (empty(a) || !empty(b))
    

    如果您必须确保多个字段不为空,例如如果我们希望仅当 a OR b 不为空时才需要 c ,则此方法也有效:

    // (a or b) => c
    if (!(!empty(a) || !empty(b)) || !empty(c))
    //Equivalent to
    if ((empty(a) && empty(b)) || !empty(c))
    

    如果你加上其他条件,你需要在它周围加上括号,因为运算符优先。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2013-07-07
      相关资源
      最近更新 更多