PHPWord 模板处理器未初始化
PHPWord TemplateProcessor uninitialized
我在尝试从我有这段代码的 PHPWord 模板处理器生成文件时遇到了这个问题...
<?php
require_once '../vendor/autoload.php';
$num_written = 0;
class Processor{
private $templateProcessor;
private $objWriter;
function __construct($template){
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);
}
function create_document_from_template($formdata){
global $num_written;
$num_written++;
$name = "Receipt".$num_written.".docx";
//Notice: Undefined variable: templateProcessor
$templateProcessor->setValue('name',$formdata["company-name"]);
$templateProcessor->setValue('address',$formdata["company-address"]);
$templateProcessor->setValue('city',$formdata["company-city"]);
$templateProcessor->setValue('can_province',$formdata["company-can-province"]);
$templateProcessor->setValue('postal_code',$formdata["company-postal-code"]);
$templateProcessor->setValue('phone_number',$formdata["company-phone-number"]);
$templateProcessor->setValue('email',$formdata["company-email"]);
$templateProcessor->setValue('website',$formdata["company-website"]);
$templateProcessor->setValue('letter_signature_name',$formdata["company-letter-signature-name"]);
$templateProcessor->setValue('letter_signature_title',$formdata["company-letter-signature-title"]);
$templateProcessor->setValue('letter_text',$formdata["company-letter-text"]);
$templateProcessor->setValue('receipt_signature_name',$formdata["company-receipt-signature-name"]);
$templateProcessor->setValue('charity_number',$formdata["company-charity-number"]);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($templateProcessor, 'Word2007');
$link_to_save = "../submission/docxs_to_send/".$name;
$objWriter->save($link_to_save);
return $name;
}
}
?>
其中 $template 是我的 docx 的名称,它与我的 php 文件位于同一目录中
我收到以下错误:注意:未定义变量:templateProcessor
我找不到关于这个特定问题的任何文档,这是为什么?
您正在通过 create_document_from_template
方法访问构造函数中的局部变量。
在您的构造函数中,您应该使用 $this->templateProcessor
而不是 $templateProcessor
。
$templateProcessor
的所有实例都应在您的 create_document_from_template
方法中更改为 $this->templateProcessor
。
您的整个代码将变为:
<?php
require_once '../vendor/autoload.php';
$num_written = 0;
class Processor{
private $templateProcessor;
private $objWriter;
function __construct($template){
$this->templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);
}
function create_document_from_template($formdata){
global $num_written;
$num_written++;
$name = "Receipt".$num_written.".docx";
//Notice: Undefined variable: templateProcessor
$this->templateProcessor->setValue('name',$formdata["company-name"]);
$this->templateProcessor->setValue('address',$formdata["company-address"]);
$this->templateProcessor->setValue('city',$formdata["company-city"]);
$this->templateProcessor->setValue('can_province',$formdata["company-can-province"]);
$this->templateProcessor->setValue('postal_code',$formdata["company-postal-code"]);
$this->templateProcessor->setValue('phone_number',$formdata["company-phone-number"]);
$this->templateProcessor->setValue('email',$formdata["company-email"]);
$this->templateProcessor->setValue('website',$formdata["company-website"]);
$this->templateProcessor->setValue('letter_signature_name',$formdata["company-letter-signature-name"]);
$this->templateProcessor->setValue('letter_signature_title',$formdata["company-letter-signature-title"]);
$this->templateProcessor->setValue('letter_text',$formdata["company-letter-text"]);
$this->templateProcessor->setValue('receipt_signature_name',$formdata["company-receipt-signature-name"]);
$this->templateProcessor->setValue('charity_number',$formdata["company-charity-number"]);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($this->templateProcessor, 'Word2007');
$link_to_save = "../submission/docxs_to_send/".$name;
$objWriter->save($link_to_save);
return $name;
}
}
我在尝试从我有这段代码的 PHPWord 模板处理器生成文件时遇到了这个问题...
<?php
require_once '../vendor/autoload.php';
$num_written = 0;
class Processor{
private $templateProcessor;
private $objWriter;
function __construct($template){
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);
}
function create_document_from_template($formdata){
global $num_written;
$num_written++;
$name = "Receipt".$num_written.".docx";
//Notice: Undefined variable: templateProcessor
$templateProcessor->setValue('name',$formdata["company-name"]);
$templateProcessor->setValue('address',$formdata["company-address"]);
$templateProcessor->setValue('city',$formdata["company-city"]);
$templateProcessor->setValue('can_province',$formdata["company-can-province"]);
$templateProcessor->setValue('postal_code',$formdata["company-postal-code"]);
$templateProcessor->setValue('phone_number',$formdata["company-phone-number"]);
$templateProcessor->setValue('email',$formdata["company-email"]);
$templateProcessor->setValue('website',$formdata["company-website"]);
$templateProcessor->setValue('letter_signature_name',$formdata["company-letter-signature-name"]);
$templateProcessor->setValue('letter_signature_title',$formdata["company-letter-signature-title"]);
$templateProcessor->setValue('letter_text',$formdata["company-letter-text"]);
$templateProcessor->setValue('receipt_signature_name',$formdata["company-receipt-signature-name"]);
$templateProcessor->setValue('charity_number',$formdata["company-charity-number"]);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($templateProcessor, 'Word2007');
$link_to_save = "../submission/docxs_to_send/".$name;
$objWriter->save($link_to_save);
return $name;
}
}
?>
其中 $template 是我的 docx 的名称,它与我的 php 文件位于同一目录中
我收到以下错误:注意:未定义变量:templateProcessor
我找不到关于这个特定问题的任何文档,这是为什么?
您正在通过 create_document_from_template
方法访问构造函数中的局部变量。
在您的构造函数中,您应该使用 $this->templateProcessor
而不是 $templateProcessor
。
$templateProcessor
的所有实例都应在您的 create_document_from_template
方法中更改为 $this->templateProcessor
。
您的整个代码将变为:
<?php
require_once '../vendor/autoload.php';
$num_written = 0;
class Processor{
private $templateProcessor;
private $objWriter;
function __construct($template){
$this->templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($template);
}
function create_document_from_template($formdata){
global $num_written;
$num_written++;
$name = "Receipt".$num_written.".docx";
//Notice: Undefined variable: templateProcessor
$this->templateProcessor->setValue('name',$formdata["company-name"]);
$this->templateProcessor->setValue('address',$formdata["company-address"]);
$this->templateProcessor->setValue('city',$formdata["company-city"]);
$this->templateProcessor->setValue('can_province',$formdata["company-can-province"]);
$this->templateProcessor->setValue('postal_code',$formdata["company-postal-code"]);
$this->templateProcessor->setValue('phone_number',$formdata["company-phone-number"]);
$this->templateProcessor->setValue('email',$formdata["company-email"]);
$this->templateProcessor->setValue('website',$formdata["company-website"]);
$this->templateProcessor->setValue('letter_signature_name',$formdata["company-letter-signature-name"]);
$this->templateProcessor->setValue('letter_signature_title',$formdata["company-letter-signature-title"]);
$this->templateProcessor->setValue('letter_text',$formdata["company-letter-text"]);
$this->templateProcessor->setValue('receipt_signature_name',$formdata["company-receipt-signature-name"]);
$this->templateProcessor->setValue('charity_number',$formdata["company-charity-number"]);
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($this->templateProcessor, 'Word2007');
$link_to_save = "../submission/docxs_to_send/".$name;
$objWriter->save($link_to_save);
return $name;
}
}