创建动态PDF并使用Loop with MYSQL和Codeigniter将其保存在文件夹中

时间:2016-07-09 05:33:02

标签: codeigniter mpdf

这是带有循环(编辑)的公共函数

public function generate_salary_slip(){

    $this->load->helper('file');
    $this->load->library('m_pdf');  
    $data = [];
    $slip = $this->Admin_Login_Model->generate_salary_slip();
    //$html = array();
    $html='';
    if(!empty($slip)){
        foreach($slip as $slip_list){               
            $id = $slip_list->emp_id;
            $data['attendance'] = $this->Admin_Login_Model->get_slip_attendance($id);
            $data['emp_profile'] = $this->Admin_Login_Model->get_emp_details($id);
            $data['late_day'] = $this->Admin_Login_Model->get_late_days($id);
            $data['half_days'] = $this->Admin_Login_Model->get_half_days($id);
            $data['salary'] = $this->Admin_Login_Model->get_salary_slip($id);               
            $data['second_half'] = $this->Admin_Login_Model->get_half_Second_days($id);             
            //$html=$this->load->view('admin/payslip',$data);
            $pdfFilePath = date("F_Y")."salary_slip.pdf";
            $html .= $this->load->view('admin/payslip', $data, true);
        }
        $htmlval = $html;
        //echo $html;exit;
        $this->m_pdf->pdf->WriteHTML($htmlval);
        $this->m_pdf->pdf->Output('salary_slips/'.$pdfFilePath, "F");


        $this->session->set_flashdata('success','Salary slips saved in directory!');
        redirect('admin_attendance_list');
    }else{
        $this->session->set_flashdata('message','Salary slips not available for this month!');
        redirect('admin_attendance_list');
    }
}

文件已保存在文件夹中,但仅限于第一条记录。此外,重复循环正在生成,但具有相同的记录。

如何循环创建HTML。

PS:使用MPDF生成PDF文件

任何肝脏都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

你需要在forech循环之外进行render,writeHtml和Output调用,你有问题。

您可以将所有数据保存在var中,然后像现在一样呈现HTML,然后生成PDF。

编辑:你的代码应该是这样的(请阅读下面的评论):

$htmlData = array();
if(!empty($slip)){
    foreach ($slip as $slip_list) {
        // 
        $htmlData[] = $data;
    }

    $pdfFilePath = date("F_Y")."salary_slip.pdf";
    $html = $this->load->view('admin/payslip', $htmlData, true);
    $this->m_pdf->pdf->WriteHTML($html);
    $this->m_pdf->pdf->Output('salary_slips/'.$pdfFilePath, "F");