Support

Account

Home Forums Front-end Issues Accept only unique values Reply To: Accept only unique values

  • validating a row against other rows is a little different. For this you need to look at the other values in $_POST[‘acf’] and you’ll need to use the field keys.

    So, let’s for this example say that the field key of the repeater is field_1111 and the field key of the text field is field_2222

    
    add_filter('acf/validate_value/key=field_2222', 'acf_unique_repeater_sub_field', 10, 4);
    function acf_unique_repeater_sub_field($valid, $value, $field, $input) {
      // set up an array to hold all submitted values for rows
      $list = array();
      foreach ($_POST['acf']['field_1111'] as $row) {
        if (in_array($row['field_2222'], $list)) {
          // this one already exists
          $valid = 'There are duplicate '.$field['name'].' values';
          // found a duplicate so we don't need to continue looping
          break;
        }
        // add the value of this row to the list
        $list[] = $row['field_2222'];
      }
      return $valid;
    }