source

Gravity Forms 플러그인 - 폼 필드를 동적으로 채우지 않음

nicesource 2023. 2. 28. 23:37
반응형

Gravity Forms 플러그인 - 폼 필드를 동적으로 채우지 않음

그라비티 폼에 문제가 좀 있어요.다중 페이지 양식이며, 1페이지의 포스트 값을 사용하여 2페이지의 필드를 입력해야 합니다.근데 안 되네.물론 2페이지의 필드는 "필드를 동적으로 입력할 수 있도록 허용"으로 구성되고 필드의 매개 변수는 "이름"으로 설정됩니다.제 코드는 다음과 같습니다.

add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
    $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ( $_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
    return $name;
}

값을 출력할 때$name변수 사용var_dump($name);사실 맞습니다.

변경했을 경우$name로.$name = 'Last Middle First';필요한 만큼 필드를 채우고 있습니다.

도와주셔서 고맙습니다.

EDIT: 테스트를 위해 코드를 다음과 같이 변경했습니다.

add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
    $name = 'Test';
    if ( ! empty( $_POST['input_1'] ) && ! empty( $_POST['input_2'] ) ) {
        $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ( $_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
    //var_dump( $name );
    }
    return $name;
}

이 행의 코멘트를 해제하면var_dump변수의 값$name다시 올바르게 설정되었지만 2페이지의 필드에 값이 미리 입력되어 있습니다.Test아마 이 필터는 1페이지에서도 호출될 것 같은데 플러그인이 이 값을 캐시할 수 있을까요?캐싱 플러그인을 사용하지 않기 때문에 왜 작동하지 않는지 알 수 없습니다.

여러 페이지에 걸쳐 폼을 작성하는 대신 jQuery를 사용하여 여러 페이지의 이미지를 만들 수 있습니다..hide또는.slideToggle이렇게 하면 문제가 해결되고 폼 데이터 제출이 훨씬 쉬워집니다.그런 다음 단순히 과거 입력의 값을 호출합니다.

쿼리 문자열을 사용하여 데이터를 유지하고 필드를 동적으로 채울 수 있습니다.

http://siteurl.com/form-url/?your_parameter=값

add_filter('gform_field_value_author_email', 'populate_post_author_email');
function populate_post_author_email($value){
global $post;

$author_email = get_the_author_meta('email', $post->post_author);

return $author_email;
}

대신 이 gform_pre_render 필터를 사용해 보십시오.ID 7에 필터를 추가합니다. 7을 Gravity 양식의 ID로 바꿉니다.

add_filter('gform_pre_render_7', 'populate_form_pre_render');

function populate_form_pre_render($form){
  $name ='';
  foreach ($form['fields'] as &$field)
  {
     // replace 2 with the actual ID of your form field 
    if ( 2 == $field['id'] ){
      if ( ! empty( $_POST['input_1'] ) && ! empty( $_POST['input_2'] ) ) {
         $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ($_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
        //var_dump( $name );
      }
      $field['defaultValue']=$name;
  echo '<pre>';
  print_r($field);
  echo '</pre>';
   }    

 }

 return $form;
}

언급URL : https://stackoverflow.com/questions/13433482/gravity-forms-plugin-dynamically-populating-form-field-isnt-working

반응형