简体   繁体   中英

Gravity forms input values

I'm new in the php world and i'm trying to build something in wordpress by gravity forms.

Basicly for now I just playing around and try to create some codes I can use when I start building. My question is: I have a form 1 where I can enter a name eg Football,Baseball,Hockey and it get saved to my data base. Then I have another form with the id 2 where there is a drop down box, here i want those values(names) submitted in form 1 to be dynamically populated. I have been trying to create a code by finding pieces around some websites (you will properly discover I'm mixing everything together) and ended up with this:

add_filter("gform_pre_render", "test_task");

add_filter("gform_admin_pre_render", "test_task");

add_filter('gform_pre_submission_filter', 'test_task');
function test_task($entry, $form){

if($form["id"] != 2)
   return $form;

$entry["1"];

$items = array();

$items[] = array("text" => "Choose Sport", "value" => "");

foreach($posts as $post)
    $items[] = array("value" => $post->post_title, "text" => $post->post_title);

foreach($form["fields"] as &$field)
    if($field["id"] == 2){            
        $field["choices"] = $items;
    }

    return $form;
}

Hope someone can show me how it should be done so I can learn to do it in the future.

Sincerely

Lars

I'm afraid the $entry object is not available to the gform_pre_render , gform_pre_submission_filter or gform_admin_pre_render hooks. Give the following a try.

add_filter( 'gform_pre_render', 'populate_sports_choices' );
add_filter( 'gform_pre_validation', 'populate_sports_choices' );
add_filter( 'gform_pre_submission_filter', 'populate_sports_choices' );
add_filter( 'gform_admin_pre_render',  'populate_sports_choices' );
function populate_sports_choices( $form ) {
    // only run for form 2
    if( $form['id'] != 2 )
        return $form;

    foreach ( $form['fields'] as &$field ) {
function populate_sports_choices( $form ) {
    foreach ( $form['fields'] as &$field ) {

        // only populate the field if it is a select and has the designated css class name
        if ( $field['type'] != 'select' || strpos( $field['cssClass'], 'populate-sport' ) === false )
            continue;

        // get form 1 field 4 entry values
        $sports = get_entry_field_values( 4, 1 );

        // create the $choices array and set the placeholder choice
        $choices = array( array( 'text' => 'Select a Sport', 'value' => '' ) );

        // loop through each of the sports and add them to the $choices array
        foreach ( $sports as $sport ) {
            $choices[] = array( 'text' => $sport['value'], 'value' => $sport['value'] );
        }

        //replace the field choices with the contents of the $choices array
        $field['choices'] = $choices;

    }

    return $form;
}

/**
 * Allows you to retrieve an array of field values.
 * Requires either the $field object or a field ID and a form ID.
 *
 * Example: $values = get_entry_field_values( 5, 113 );
 */
function get_entry_field_values( $field_id, $form_id ) {
    global $wpdb;

    if ( is_array( $field_id ) ) {
        $field_id = rgget( 'id', $field_id );
    }

    $tablename = $wpdb->prefix . 'rg_lead_detail';
    $sql = "SELECT value FROM $tablename WHERE form_id = %d AND CAST(field_number as unsigned) = %d";

    return $wpdb->get_results( $wpdb->prepare( $sql, $form_id, $field_id ), ARRAY_A );
}

The above is based on examples from the following sources: http://www.gravityhelp.com/documentation/page/Dynamically_Populating_Drop_Down_Fields http://www.gravityhelp.com/forums/topic/drop-down-dynamic-population-from-single-line-text

I don't think you need to write any code at all. This is supported by Gravity Forms itself. In the form editor go to settings > confirmations, then choose redirect, enter the page form 2 is on and select Pass Field Data Via Query String then enter name={Name:1} or something similar depending on the name and id of the fields in Form 1. And then in Form 2, go to the field you want to populate and select advanced and dynamically prepopulate and enter what you typed to the left of the =, in this case name .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM