gform_merge_tag_value_pre_calculation

gform_merge_tag_value_pre_calculation

DescriptionUsageJavaScript VersionParametersExamplePlacementSource CodePHP VersionParametersExamplePlacementSource Code

Description
This filter can be used to modify the value returned by a field merge tag before it is used by a number field calculation or calculated product field.
Usage
The gform_merge_tag_value_pre_calculation filter has both a JavaScript version and a PHP version. Both versions should be used.
The JavaScript version only overrides the merge tag value on the front-end.
12345gform.addFilter( 'gform_merge_tag_value_pre_calculation', function( value, mergeTagArr, isVisible, formulaField, formId ) {    // do stuff     return result;} );
The PHP version overrides the merge tag value when the calculation is rerun during submission using the field values saved in the entry.
12345add_filter( 'gform_merge_tag_value_pre_calculation', function( $value, $input_id, $modifier, $field, $form, $entry ) {    // do stuff     return $result;}, 10, 5 );
JavaScript Version

Parameters

value float
The field value after the merge tag was processed.

mergeTagArr array
The merge tag being processed.
mergeTagArr[0] contains the full merge tag e.g. {Field label:ID:modifier}
mergeTagArr[1] contains the field or input ID e.g. 2
mergeTagArr[3] contains the modifier(s) including the colon e.g. :value
mergeTagArr[4] contains the modifier(s) without the colon e.g. value

isVisible boolean
Is the field referenced in the merge tag visible or hidden by conditional logic?

formulaField Javascript Object
The current calculation field object. e.g.
1{"field_id":3,"formula":"{:1}+{:2}","rounding":""}

formId integer
The ID of the form in use.

Example
This example shows how you can enable the :value modifier for use with choice based pricing fields.
1234567891011121314151617181920212223242526gform.addFilter('gform_merge_tag_value_pre_calculation', function (value, mergeTagArr, isVisible, formulaField, formId) {     var inputId = mergeTagArr[1],        fieldId = parseInt(inputId),        modifier = mergeTagArr[4],        field = jQuery('#field_' + formId + '_' + fieldId);     if (modifier == 'value' && field.hasClass('gfield_price') && isVisible) {        var input = field.find('input[name="input_' + inputId + '"], select[name="input_' + inputId + '"]');         // filter out unselected radio or checkbox inputs        if (input.length > 1 || input.prop('type') == 'checkbox') {            input = input.filter(':checked');        }         if (input.length > 0) {            var val = input.val().split('|');            if (val.length > 1) {                value = val[0];            }        }     }     return value;});
Placement
Your code snippet can be placed in a HTML field on your form or in a theme custom JavaScript file.
Source Code
This filter is located in js/gravityforms.js
PHP Version

Parameters

$value float
The field value after the merge tag was processed.

$input_id string
The field or input ID from the merge tag.

$modifier string
The modifier from the merge tag e.g. value.

$field Field Object
The calculation field currently being processed.

$form Form Object
The form currently being processed.

$entry Entry Object
The entry currently being processed.

Example
This example shows how you can enable the :value modifier for use with choice based pricing fields.
12345678910add_filter( 'gform_merge_tag_value_pre_calculation', function ( $value, $input_id, $modifier, $field, $form, $entry ) {    if ( $modifier == 'value' ) {        $value = GFCommon::to_number( GFCommon::replace_variables( "{:{$input_id}:value}", $form, $entry ) );        if ( ! $value || ! is_numeric( $value ) ) {            $value = 0;        }    }     return $value;}, 10, 6 );
Placement
Your code snippet should be placed in the functions.php file of your active theme.
Source Code
This filter is located in GFCommon::calculate() in common.php

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注