将变量从Codeigniter会话类传递到FPDF类

时间:2013-06-28 04:04:43

标签: php codeigniter session-variables cfpdf

我在使用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);
    }
}

任何帮助都将不胜感激。

2 个答案:

答案 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);
    }
}