2014-11-23 48 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; 
}