2017-09-29 82 views
-1

中給出的數組我在我的wordpress網站的functions.php中有以下代碼。它允許我以重力形式控制公司代碼。但我想驗證對所有形式的工作,但是當我改變gform_field_validation_5_6gform_field_validation(從一種形式的合作,以各種形式的)我得到這個錯誤:警告:strtoupper()期望參數1是字符串,在/ 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

您的'$ value'是一個數組。 –

+0

strtoupper()只能處理字符串。 $ value是一個數組。 –

回答

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); 
} 

如果你想傳入多個值。該功能將需要重大更改。

相關問題