我有一个用Gravity Forms创建的非常简单的表单;
它提交两个数字,然后重定向到不同的结果页面。
如何在结果页面上检索这两个数字?
答案 0 :(得分:0)
add_filter("gform_confirmation_4", "custom_confirmation", 3, 4 );
function custom_confirmation($confirmation, $form, $lead, $ajax)
提供自定义确认。可以使用$ lead [{field ID}]
检索每个字段值答案 1 :(得分:0)
基于使用表单提交挂钩和GForms API的组合,我有一个解决方案。这是一个可怕的插件,所以我为逻辑流程的混乱道歉。使用框架方法而不是自己处理数据非常重要,因为在那里存在大量的hacks和shonky事件以正确匹配字段ID等等。
我将提供一个解决方案,从一个表单传递提交,预先填充另一个表单。更改POST数据的目的地非常简单,他们在gform_form_tag
hook documentation page上有一个示例。是的,这确实是唯一的方法。
这里没有进一步的代码。我已将其设置为处理表单配置以使最终用户更简单,因此它的工作原理如下:
$class = 'GForms_Redirector';
add_filter('gform_pre_submission', array($class, 'checkForSubmissionRedirection'), 10, 1);
add_filter('gform_confirmation', array($class, 'performSubmissionRedirection'), 10, 4);
abstract class GForms_Redirector
{
const SOURCE_FORMS_CLASS_MATCH = 'submission-redirect';
const DEST_PAGE_SLUG = 'submit-page-slug';
const DEST_FORM_ID = 1;
protected static $submissionRedirectUrl;
// first, read sent data and generate redirection URL
function checkForSubmissionRedirection($form)
{
if (false !== preg_match('@\W' . self::SOURCE_FORMS_CLASS_MATCH . '\W@', $form['cssClass'])) {
// load page for base redirect URL
$destPage = get_page_by_path(self::DEST_PAGE_SLUG);
// load form for reading destination form config
$destForm = RGFormsModel::get_form_meta(self::DEST_FORM_ID, true);
$destForm = RGFormsModel::add_default_properties($destForm);
// generate submission data for this form (there seem to be no hooks before gform_confirmation that allow access to this. DUMB.)
$formData = GFFormsModel::create_lead($form);
// create a querystring for the new form based on mapping dynamic population parameters to CSS class names in source form
$queryVars = array();
foreach ($destForm['fields'] as $destField) {
if (empty($destField['inputName'])) {
continue;
}
foreach ($form['fields'] as $field) {
if (preg_match('@(\s|^)' . preg_quote($destField['inputName'], '@') . '(\s|$)@', $field['cssClass'])) {
$queryVars[$destField['inputName']] = $formData[$field['id']];
break;
}
}
}
// set the redirect URL to be used later
self::$submissionRedirectUrl = get_permalink($destPage) . "?" . http_build_query($queryVars);
}
}
// when we get to the confirmation step we set the redirect URL to forward on to
function performSubmissionRedirection($confirmation, $form, $entry, $is_ajax = false)
{
if (self::$submissionRedirectUrl) {
return array('redirect' => self::$submissionRedirectUrl);
}
return $confirmation;
}
}
如果您想通过查询字符串在其他地方传递表单值,那么您只需要从回调中删除我的代码并构建您自己的URL以重定向到。
答案 2 :(得分:0)
这是一个非常古老的问题,现在您可以使用确认设置上的查询字符串发送它。
他们有关于此链接的文档: How to send data from a form using confirmations
只需按照第一步操作就可以了。