2017-09-29 6 views
-1
으로 지정합니다.

내 function.php에 다음 코드가 있습니다. 그것은 나를 중력의 형태로 회사 코드를 제어 할 수있게 해줍니다. 하지만 유효성 검사가 모든 형태에서 일하고 싶어하지만 난 (모든 형태의 하나 개의 형태에서 작동) gform_field_validationgform_field_validation_5_6을 변경하면이 오류 얻을 :경고 : strtoupper()는 매개 변수 1을 문자열로, array는/var/www/

Warning: strtoupper() expects parameter 1 to be string, array given in /var/www/...

이 코드는 내가 사용을 :

/** 
* Validate the submitted Company Code 
* 
* @since  2016-07-30 
* @author  Dave Clements 
* @link  https://www.randomlists.com/string Random String Generator to create new company codes 
* @link  https://www.gravityhelp.com/documentation/article/gform_field_validation/ Documentation on gform_field_validation() 
* @param  array  $result The validation result to be filtered. 
* @param  string|array $value The field value to be validated. 
* @param  array  $form The Form Object. 
* @param  array  $field The Field Object. 
* @return  array  The filtered $result 
*/ 
function validate_company_code($result, $value, $form, $field) { 
    $valid_company_codes = array(
     '6XZTPWF3' => 'Company name', 
     '6XZTPWF3' => 'Company name', 
     '7DJEHMM7' => 'Company name', 
     '6XZTPWF3' => 'Company name', 
    ); 
    // Allow user entry to include lower-case letters. 
    $capitalized_value = strtoupper($value); 
    // Check if the entered code is valid. 
    if (! array_key_exists($capitalized_value, $valid_company_codes)) { 
     $result['is_valid'] = false; 
     $result['message'] = 'That company code appears to be invalid. Please try again.'; 
    } 
    return $result; 
} 
add_filter('gform_field_validation', 'validate_company_code', 10, 4); 

이 오류의 원인은 무엇입니까. 이 기능 위의 코멘트를 읽으면

+1

'$ 값'은 배열입니다. –

+0

strtoupper()는 문자열 만 처리 할 수 ​​있습니다. $ 값은 배열입니다. –

답변

0

당신은 알 것입니다

* @param  array  $result The validation result to be filtered. 
* @param  string|array $value The field value to be validated. <-- HERE 
* @param  array  $form The Form Object. 
* @param  array  $field The Field Object. 

$ 값이 경고를 얻을 로직 배열이 될 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 마지막 줄을 다음과 같이 변경하여 특정 양식을 만들 때 작동합니다. 'add_filter ('gform_field_validation_6_10', 'validate_company_code', 10, 4); ' 내가 제대로 작동하게하려면 어떤 아이디어가 필요합니다. gform_field_validation의 문서에 따라 모든 형식에서이 함수를 사용하는 함수입니다. – harn

0

간단한 배열이 있다고 가정합니다.

if(is_array($value)){ 
    $capitalized_value = strtoupper($value[0]); 
} else { 
    $capitalized_value = strtoupper($value); 
} 

여러 값을 전달하려는 경우. 이 기능은 큰 변화가 필요합니다.