如何使用 PHP 作为 gform_pre_submission 的一部分来更改重力形式单选按钮字段中的选择
How to change which choice in a Gravity Forms radio button field is selected using PHP as part of a gform_pre_submission
我的PHP技术不好,但我通过代码示例学习,因为我不熟悉语法,但在这种情况下我找不到有效的代码示例。
我想根据另一个字段的值在 gform_pre_submission add_action 期间设置产品选项单选按钮字段的选定值。我已经尝试过类似的方法(还有其他函数和变量提前在其他地方定义,这是一个抽象)但是这种方法对我不起作用,我想知道我错过了什么:
add_action( 'gform_pre_submission_FORMIDhere', 'select_radio_button' );
function select_radio_button( $form) {
foreach( $form['fields'] as &$field ) {
if( 53 === $field->id ) {
foreach( $field->choices as &$choice ) {
echo($aag_kg_nummorn.' / /'.$choice['value']);
if( $aag_kg_nummorn == $choice['value'] ) {
echo('Bingo!');
$choice['isSelected'] = true; // <- THIS line doesn't work for me
}
}
}
}
return $form;
}
感谢您提前帮助我。
在回答之前我想指出几件事
- 你应该修改
$_POST
而不是字段,我看你已经想通了。
gform_pre_submission
是一个动作,不是一个过滤器,所以在这里返回表单没有任何作用。
答案
假设您有一个 ID 为 2 的产品选项字段,它有 3 个选项
First Option|1
Second Option|2
Third Option|3
然后代码看起来像
add_action( 'gform_pre_submission_FORMIDhere', 'select_radio_button' );
function select_radio_button( $form ) {
$_POST['input_2'] = 'New Option|6';
}
我假设您使用的是一种付款方式,该付款方式使用了 gravityforms 支付附加组件之一,如 stripe 或 Paypal,其中一些附加组件(如 PayPal Checkout)将总价值发送到支付网关,使用在这个动作被触发之前的JS,所以发送到支付网关的总值将是用户已经选择的选项的值,但是条目上的总值将使用您在代码中设置的值。
如果您还需要有关如何从 JS 端覆盖它的帮助,以便您可以将覆盖的值发送到支付网关,我可以将其写在一个单独的答案中。
我的PHP技术不好,但我通过代码示例学习,因为我不熟悉语法,但在这种情况下我找不到有效的代码示例。
我想根据另一个字段的值在 gform_pre_submission add_action 期间设置产品选项单选按钮字段的选定值。我已经尝试过类似的方法(还有其他函数和变量提前在其他地方定义,这是一个抽象)但是这种方法对我不起作用,我想知道我错过了什么:
add_action( 'gform_pre_submission_FORMIDhere', 'select_radio_button' );
function select_radio_button( $form) {
foreach( $form['fields'] as &$field ) {
if( 53 === $field->id ) {
foreach( $field->choices as &$choice ) {
echo($aag_kg_nummorn.' / /'.$choice['value']);
if( $aag_kg_nummorn == $choice['value'] ) {
echo('Bingo!');
$choice['isSelected'] = true; // <- THIS line doesn't work for me
}
}
}
}
return $form;
}
感谢您提前帮助我。
在回答之前我想指出几件事
- 你应该修改
$_POST
而不是字段,我看你已经想通了。 gform_pre_submission
是一个动作,不是一个过滤器,所以在这里返回表单没有任何作用。
答案
假设您有一个 ID 为 2 的产品选项字段,它有 3 个选项
First Option|1
Second Option|2
Third Option|3
然后代码看起来像
add_action( 'gform_pre_submission_FORMIDhere', 'select_radio_button' );
function select_radio_button( $form ) {
$_POST['input_2'] = 'New Option|6';
}
我假设您使用的是一种付款方式,该付款方式使用了 gravityforms 支付附加组件之一,如 stripe 或 Paypal,其中一些附加组件(如 PayPal Checkout)将总价值发送到支付网关,使用在这个动作被触发之前的JS,所以发送到支付网关的总值将是用户已经选择的选项的值,但是条目上的总值将使用您在代码中设置的值。
如果您还需要有关如何从 JS 端覆盖它的帮助,以便您可以将覆盖的值发送到支付网关,我可以将其写在一个单独的答案中。