source

Gravity Forms 사용자 지정 유효성 검사 필터

manycodes 2023. 4. 1. 09:39
반응형

Gravity Forms 사용자 지정 유효성 검사 필터

서드파티 서비스를 통해 판매를 처리하고 결과를 처리하여 상태가 "Success" 또는 "Invalid"인 어레이를 반환하는 기능이 있습니다.이 영업 콜은 특정 양식에 적용된 gform_after_submission 훅을 사용하여 이루어집니다.

"Success" 또는 "Invalid" 결과를 변수로 배열에 저장하면 나중에 gform_validation 훅을 사용하여 신용카드 필드를 확인 또는 비활성화하는 함수에 전달할 수 있습니다.

다음과 같이 함수에 변수를 선언합니다.

function foo { 
...code to sell product through API...

$status = $checkoutShoppingCartRequest['Result']['Status'];
}

함수 내에서 변수 $status를 인쇄하면 Success 또는 Invalid 중 하나가 표시됩니다.

이 변수를 사용해야 하는 다른 함수는 gform_validation으로 전달되며 성공 또는 무효 결과에 관계없이 매번 실패합니다.

function MBvalidate( $validation_result ) {
$form = $validation_result['form'];
if ( $status !== "Success") {
    $validation_result['is_valid'] = false;
    foreach( $form['fields'] as &$field ) {
        if ( $field->id == '34' ) {
            $field->failed_validation = true;
            $field->validation_message = 'Your credit card could not be processed.';
            break;
        }
    }
}
//Assign modified $form object back to the validation result
$validation_result['form'] = $form;
return $validation_result;

}

add_filter( 'gform_validation_47', 'MBvalidate' );

저는 글로벌이나 세션 등을 통해 변수를 전달하려고 여러 가지 방법을 시도했습니다.

저는 GF 개발은 처음이라 뭔가 부족한 것이 있습니다.어떤 방향이라도 알려주시면 감사하겠습니다.

gform_after_submission액션 이 뒤를 잇다 gform_validation.

어쨌든, 이전에 실행된 후크를 찾을있다고 가정하면, Transients API를 사용하여 제출된 각 폼에 고유한 변수를 저장합니다.set_transient()그리고.get_transient()기능들.예를 들어 임의의 ID로 채우는 모든 양식에 숨김 필드를 생성할 수 있습니다.이 랜덤 ID를 성공/잘못된 결과를 저장하고 검색하기 위한 키로 사용합니다.

$statusif-condition에서 사용하기 전에는 정의되지 않은 로컬 변수를 다음에 나타냅니다.그래서 항상null놓쳤을지도 몰라

$status = $validation_result['Result']['Status'];

상태를 체크하기 전에 이런 거.

언급URL : https://stackoverflow.com/questions/30353054/gravity-forms-custom-validation-filter

반응형