0

我在设置使用 FPDF 和 Codeigniter 框架创建的 PDF 的页眉和页脚时遇到了一些麻烦。在这段代码中,我无法将 $user 变量回显到我的标题中。我必须做什么才能获得该变量?..该类的代码如下:

<?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);
    }
}

任何帮助,将不胜感激。

4

2 回答 2

0

您没有将变量传递给 PDF 类。

$user=$this->session->userdata('name');

在这里,您正确地从 Codeigniter 中获取会话...在 Codeigniter 中。此行必须在控制器、模型等中,但在 Codeigniter 中,因为您使用的是它的本机会话库。

class printFPDF extends FPDF{
    var $user;
    function userdata($user){
        $this->user=$user;

}

我看到您在其中创建了一个自定义方法来分配 $user 属性。这很好,对。

我不知道您如何加载 FDPF 类,您应该将其设为库并使用 CI 中的 $this->load->library() 方法加载它。

现在,无论您使用何种方式在 CI 中加载 FPDF 库,您都应该得到一个库对象的实例。

一个例子(假设你没有把它变成一个库,只是在你的控制器中包含了这个类,你从 CI 会话中获取 $user 变量相同)

$fpdf = new printFPDF();

现在您传递了您创建的自定义 $user 变量,FPDF 类将使其可用:

$fpdf->userdata($user);
于 2013-06-28T04:58:56.443 回答
0

@Damien Pirsy:它不必在 CodeIgniter 中。您始终可以在项目中的任何位置引用 CodeIgniter 实例。

如果您在$CI变量中实例化 CodeIgniter,您可以访问控制器、模型、库等中的所有内容。请记住在执行此操作后使用$this->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);
    }
}
于 2013-06-28T06:31:02.273 回答