在 codeigniter 中使用 fpdf 标签脚本时如何修复 'Missing argument 1 for Pdf_label::__construct()'
How to fix 'Missing argument 1 for Pdf_label::__construct()' when using fpdf label script in codeigniter
我遇到错误:
Message: Missing argument 1 for Pdf_label::__construct(), called in
C:\xampp\htdocs\project1b\system\core\Loader.php on line 1285 and
defined
Filename: libraries/PDF_Label.php
我想做的是,我尝试在 codeigniter 中使用 fpdf 标签脚本 (Documentation Here),我已经尝试使用以下代码在 codeigniter 中生成一个简单的 pdf:
public function cetakLabelfpdf()
{
$this->load->library('fpdf');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Hello World!');
$pdf->Output();
}
它起作用了,但是当我尝试添加脚本(在本例中为标签脚本)时,我将标签脚本放在与 fpdf 文件相同的目录中(application/libraries)并使用此示例代码生成 pdf
public function cetakLabelfpdf()
{
$this->load->library('PDF_Label');
// Standard format
$pdf = new PDF_Label('L7163');
$pdf->AddPage();
// Print labels
for ($i = 1; $i <= 20; $i++) {
$text = sprintf("%s\n%s\n%s\n%s %s, %s", "Laurent $i", 'Immeuble Toto', 'av. Fragonard', '06000', 'NICE', 'FRANCE');
$pdf->Add_Label($text);
}
$pdf->Output();
}
我对第一条消息很满意,如果有人能指出我在这个案例中做错了什么,我真的很感激。
添加到我的评论中,本质上 $this->load
是为了与 CodeIgniter 兼容 libraries/models/helpers 等一起工作。当你有一些与 CodeIgniter 完全无关的东西(不是围绕它的生态系统构建的)时,你可以创建一个库到 "adapt" class 以与 CodeIgniter 兼容,或者你可以像常规 [=31] 一样使用它=] 使用 composer 自动加载或在需要它的 controller/model class 顶部需要必要的文件(不适用于命名空间 classes - 然后你需要 composer 或可以 自动加载 ).
的东西
在您的具体情况下,当您在标签 class 上调用 $this->load->library()
时,CI 创建了一个 new
标签 class (在幕后)并且没有将任何东西传递给它的 __construct
那里有一个必需的参数。因此错误。您 可以 通过 $this->load->library('some_lib', ['arg1'=>'foo', 'arg2'=>'bar']
将变量传递给库构造函数,但是只有当库是为 CI 构建时(接收数组中的所有构造函数参数而不是逗号分隔的参数列表)。
我遇到错误:
Message: Missing argument 1 for Pdf_label::__construct(), called in C:\xampp\htdocs\project1b\system\core\Loader.php on line 1285 and defined
Filename: libraries/PDF_Label.php
我想做的是,我尝试在 codeigniter 中使用 fpdf 标签脚本 (Documentation Here),我已经尝试使用以下代码在 codeigniter 中生成一个简单的 pdf:
public function cetakLabelfpdf()
{
$this->load->library('fpdf');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Hello World!');
$pdf->Output();
}
它起作用了,但是当我尝试添加脚本(在本例中为标签脚本)时,我将标签脚本放在与 fpdf 文件相同的目录中(application/libraries)并使用此示例代码生成 pdf
public function cetakLabelfpdf()
{
$this->load->library('PDF_Label');
// Standard format
$pdf = new PDF_Label('L7163');
$pdf->AddPage();
// Print labels
for ($i = 1; $i <= 20; $i++) {
$text = sprintf("%s\n%s\n%s\n%s %s, %s", "Laurent $i", 'Immeuble Toto', 'av. Fragonard', '06000', 'NICE', 'FRANCE');
$pdf->Add_Label($text);
}
$pdf->Output();
}
我对第一条消息很满意,如果有人能指出我在这个案例中做错了什么,我真的很感激。
添加到我的评论中,本质上 $this->load
是为了与 CodeIgniter 兼容 libraries/models/helpers 等一起工作。当你有一些与 CodeIgniter 完全无关的东西(不是围绕它的生态系统构建的)时,你可以创建一个库到 "adapt" class 以与 CodeIgniter 兼容,或者你可以像常规 [=31] 一样使用它=] 使用 composer 自动加载或在需要它的 controller/model class 顶部需要必要的文件(不适用于命名空间 classes - 然后你需要 composer 或可以 自动加载 ).
在您的具体情况下,当您在标签 class 上调用 $this->load->library()
时,CI 创建了一个 new
标签 class (在幕后)并且没有将任何东西传递给它的 __construct
那里有一个必需的参数。因此错误。您 可以 通过 $this->load->library('some_lib', ['arg1'=>'foo', 'arg2'=>'bar']
将变量传递给库构造函数,但是只有当库是为 CI 构建时(接收数组中的所有构造函数参数而不是逗号分隔的参数列表)。