2014-11-23 5 views
2

Я пытаюсь экспортировать значения, которые пользователи вводят в контактную форму 7 в WordPress, в PDF через fpdf. Это то, что я создал, я могу создать PDF, но без динамически генерируемого значения из формы.Экспорт результатов формы из формы контакта 7 в PDF (fPDF)

functions.php

add_action('wpcf7_before_send_mail', 'save_application_form'); 
function save_application_form($cf7) { 

/* GET EXTERNAL CLASSES */ 
require(TEMPLATEPATH.'/fpdf/fpdf.php'); 

$values = $cf7->posted_data; 
echo $values['first-name']; 


/* example code to generate the pdf */ 
$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','B',16); 
$pdf->Write(5,'first-name'); 
$pdf->SetFont('Arial','B',16); 


$pdf->Output(TEMPLATEPATH.'/fpdf/pdf.pdf', 'F'); 

/* add the pdf as attach to the email*/ 
$cf7->uploaded_files = array ('attachedfile' => TEMPLATEPATH.'/fpdf/pdf.pdf'); 

Как я могу вытащить содержимое из контактной формы 7? Теперь, если я нажимаю send, я получаю только PDF-файл с надписью «first name». Я пробовал несколько комбинаций, ничего не работает.

Благодарим за помощь.

EDIT: Я понял, как печатать, но кажется, что проблема в том, что я не вытягивать вставленное содержимое из Contact Form 7.

$first_name = $cf7->posted_data["first-name"]; 
$var = "test"; 


/* example code to generate the pdf */ 
$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','B',16); 
$pdf->Write(5, "My car is " . $var . "bl"); 
$pdf->SetFont('Arial','B',16); 

Так $ first_name не работает, потому что он пуст, любые идеи, как я могу это исправить? Потому что, если я пытаюсь использовать $ var, это работает.

+0

все, что вы «пишете», это * имя *, так что это все, что вы получаете. –

+0

, но если я вставляю $ value, я ничего не вижу, не могли бы вы помочь мне с этим? – Svedr

+0

Я пробовал еще два варианта. Первая попытка (Страница не загружается) '$ first_name = $ cf7-> posted_data [" first-name "]; /* пример кода для создания pdf */ $ pdf = новый FPDF(); $ pdf-> AddPage(); $ pdf-> SetFont («Times», «B», 16); $ pdf-> Write (echo $ first_name); $ pdf-> SetFont ('Arial', 'B', 16); ' Вторая попытка и ничто не печатает в pdf ' $ first_name = $ cf7-> posted_data ["first-name"]; /* пример кода для создания pdf */ $ pdf = новый FPDF(); $ pdf-> AddPage(); $ pdf-> SetFont («Times», «B», 16); $ pdf-> Write ($ first_name); $ pdf-> SetFont ('Arial', 'B', 16); ' – Svedr

ответ

0

Вам потребуется получить $ first_name из данных POST. Это должно работать:

$first_name = $_POST["first-name"]; 

/* example code to generate the pdf */ 
$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','B',16); 
$pdf->Write(5, "My car is " . $first_name . "bl"); 
$pdf->SetFont('Arial','B',16); 
0

Начиная с версии 3.9 Контакт с 7, вместо того, чтобы использовать $ cf7-> posted_data, вы можете получить отправленные данные с:

$submission = WPCF7_Submission::get_instance(); 

if ($submission) { 
    $posted_data = $submission->get_posted_data(); 
} 

Теперь у вас есть массив с Отправленные данные, которые можно использовать для создания файла PDF:

/* example code to generate the pdf */ 
$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Times','B',16); 
$pdf->Write(5, "My first name is: " . $posted_data['first-name']); 
$pdf->SetFont('Arial','B',16); 
0

мне нужно сделать то же самое, и, наконец, получил контактную форму 7 результатов должны быть преобразованы в PDF. В итоге я использовал комбинацию предложений, упомянутых на нескольких форумах, в том числе.

Вы должны уметь адаптировать это в своих целях.

add_action('wpcf7_before_send_mail', 'wpcf7_update_email_body'); 
function wpcf7_update_email_body($contact_form) { 

$submission = WPCF7_Submission::get_instance(); 
if ($submission) { 
/* DEFINE CONSTANT AND GET FPDF CLASSES */ 
define ('FPDF_PATH',get_template_directory().'/fpdf/'); // MAKE SURE THIS POINTS TO THE DIRECTORY IN YOUR THEME FOLDER THAT HAS FPDF.PHP 
require(FPDF_PATH.'fpdf.php'); 

$posted_data = $submission->get_posted_data(); 
// SAVE FORM FIELD DATA AS VARIABLES 
$name = $posted_data["your-name"]; 
$email = $posted_data["your-email"]; 
$subject = $posted_data["your-subject"]; 
$message = $posted_data["your-message"]; 

$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial','B',16); 
$pdf->Write(5,$name . "\n\n" . $email . "\n\n" . $subject . "\n\n" . $message); 
$pdf->Output(FPDF_PATH.'test.pdf', 'F'); // OUTPUT THE NEW PDF INTO THE SAME DIRECTORY DEFINED ABOVE 

} 
} 

add_filter('wpcf7_mail_components', 'mycustom_wpcf7_mail_components'); 
function mycustom_wpcf7_mail_components($components){ 
if (empty($components['attachments'])) { 
$components['attachments'] = array(FPDF_PATH .'test.pdf'); // ATTACH THE NEW PDF THAT WAS SAVED ABOVE 
} 
return $components; 
} 
2

Решение выше от Kory работает отлично. Однако он не работает с переключателями. Все радиокнопки отображаются только в виде «Массив» в финальном PDF-файле. Как правильно отобразить выбор переключателя? Код, который я использую, приведен ниже. Благодаря!

add_action('wpcf7_before_send_mail', 'wpcf7_update_email_body'); 
function wpcf7_update_email_body($contact_form) { 

$submission = WPCF7_Submission::get_instance(); 
if ($submission) { 
/* DEFINE CONSTANT AND GET FPDF CLASSES */ 
define ('FPDF_PATH',get_stylesheet_directory().'/fpdf17/'); // MAKE SURE THIS POINTS TO THE DIRECTORY IN YOUR THEME FOLDER THAT HAS FPDF.PHP 
require(FPDF_PATH.'fpdf.php'); 

$posted_data = $submission->get_posted_data(); 
// SAVE FORM FIELD DATA AS VARIABLES 
$name = $posted_data["your-name"]; 
$name2 = $posted_data["your-name2"]; 
$email = $posted_data["your-email"]; 
$enhetsnr = $posted_data["number-363"]; 
$radio220 = $posted_data["radio-220"]; 
$radio221 = $posted_data["radio-221"]; 
$radio222 = $posted_data["radio-222"]; 
$radio223 = $posted_data["radio-223"]; 
$radio224 = $posted_data["radio-224"]; 
$radio225 = $posted_data["radio-225"]; 

$pdf = new FPDF('P','mm','A4'); 
$pdf->AddPage(); 
$pdf->SetFont('Times','',16); 
$pdf->Write(5, $name . "\n\n" . $name2 . "\n\n" . $email . "\n\n" . $enhetsnr . "\n\n" . $radio220 . "\n\n" . $radio221 . "\n\n" . $radio222 . "\n\n" . $radio223 . "\n\n" . $radio224 . "\n\n" . $radio225); 
$pdf->Output(FPDF_PATH.'tillval.pdf', 'F'); // OUTPUT THE NEW PDF INTO THE SAME DIRECTORY DEFINED ABOVE 

} 
} 

add_filter('wpcf7_mail_components', 'mycustom_wpcf7_mail_components'); 
function mycustom_wpcf7_mail_components($components){ 
if (empty($components['attachments'])) { 
$components['attachments'] = array(FPDF_PATH .'tillval.pdf'); // ATTACH THE NEW PDF THAT WAS SAVED ABOVE 
} 
return $components; 
} 
Смежные вопросы