我在使用FPDF和Codeigniter框架创建PDF的页眉和页脚时遇到了一些麻烦。在这段代码中我无法将$ user变量回显给我的Header。我该怎么办才能得到这个变量? 该类的代码如下:
<?php
date_default_timezone_set('Asia/Jakarta');
$user=$this->session->userdata('name');
class printFPDF extends FPDF{
var $user;
function userdata($user){
$this->user=$user;
}
// Page header
function Header(){
global $user;
// Arial bold 15
$this->SetFont('Arial','I',8);
// Move to the right
$this->Cell(1);
// Title
$this->Cell(30,10,"Created by ".$this->user,0,0,'L');
// Move to the right
$this->Cell(190);
// Line break
$this->Ln(15);
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
您没有将变量传递到PDF类。
$user=$this->session->userdata('name');
这里你正确地从Codeigniter中获取会话...在Codeigniter中。这行必须在Controller,Model中,但在Codeigniter中,因为你正在使用它的原生会话库。
class printFPDF extends FPDF{
var $user;
function userdata($user){
$this->user=$user;
}
我看到你在里面创建了一个自定义方法来分配$ user属性。那很好,也没错。
我不知道你是如何加载FDPF类的,你应该把它变成一个库并使用CI中的$ this-&gt; load-&gt; library()方法加载它。
现在,无论您使用何种方式在CI中加载FPDF库,您都应该提供库对象的实例。
一个例子(让我们假装你没有把它变成一个库,只是把你的类包含在你的控制器中,就像你从CI会话中获取$ user变量一样)
$fpdf = new printFPDF();
现在你传递自定义你创建的$ user变量,FPDF类可以使用它:
$fpdf->userdata($user);
答案 1 :(得分:0)
@Damien Pirsy:它不一定要在CodeIgniter里面。您始终可以在项目的任何位置引用CodeIgniter实例。
如果您在 $ CI 变量中实例CodeIgniter,则可以访问控制器,模型,库等中的所有内容。请记住使用 $ this-&gt; CI 执行此操作后,而不是 $ this ,如下所示:
<?php
date_default_timezone_set('Asia/Jakarta');
class printFPDF extends FPDF{
var $CI;
function __construct(){
parent::__construct();
$this->CI =& get_instance();
}
function userdata($user){
$this->CI->session->set_userdata('name', $user);
}
// Page header
function Header(){
// Arial bold 15
$this->SetFont('Arial','I',8);
// Move to the right
$this->Cell(1);
// Title
$this->Cell(30,10,"Created by ".$this->CI->session->userdata('name'),0,0,'L');
// Move to the right
$this->Cell(190);
// Line break
$this->Ln(15);
}
}