2014-11-23 132 views
2

我試圖將用戶輸入的值輸入到WordPress的聯繫人表單7中,並通過fpdf將其導出爲PDF。 這是我設置的,我可以生成一個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的內容? 現在,如果我按發送,我只會得到一個寫有「名字」的PDF。我試過多種組合,沒有任何作用。

謝謝你的幫助。

編輯:我想通了如何打印,但它似乎是問題是,我不拉從聯繫表插入的內容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

所有你寫的是* first-name *,這就是你所得到的。 – 2014-11-23 21:08:22

+0

但是,如果我插入$值,我什麼也沒有顯示,你能幫我解決嗎? – Svedr 2014-11-23 21:11:55

+0

我已經嘗試了兩個更多的變體。 第一次嘗試(該頁面甚至沒有加載) '$ first_name = $ cf7-> posting_data [「first-name」]; /*生成pdf的示例代碼*/ $ pdf = new FPDF(); $ pdf-> AddPage(); $ pdf-> SetFont('Times','B',16); $ pdf->寫(echo $ first_name); $ PDF-> setfont程序( 'Arial字體', 'B',16);' 第二嘗試,不執行任何打印到PDF '$如first_name = $ cf7-> posted_data [ 「第一名」]; /*生成pdf的示例代碼*/ $ pdf = new FPDF(); $ pdf-> AddPage(); $ pdf-> SetFont('Times','B',16); $ pdf-> Write($ first_name); $ pdf-> SetFont('Arial','B',16);' – Svedr 2014-11-23 21:31:02

回答

0

您需要從POST數據中獲取$ first_name。這應該工作:

$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; 
}