Laravel DOMPDF不生成包含动态数据的HTML pdf文件

时间:2015-08-14 14:01:29

标签: php pdf laravel-4 dompdf

大家好,我试图使用barryvdh / laravel-dompdf,一切正常,但我无法将我的数据加载到视图中以动态生成内容,我不断得到“未定义的变量:数据'

这是我的代码:

  $data =[
    'fname'=>Input::get('efname'),
    'lname'=>Input::get('elname'),
    'dob'=>Input::get('edob'),
    'reg_date'=>date('Y-m-d'),
    'email'=>Input::get('eemailaddrs'),
    'gender'=>Input::get('gender'),
    'mobile'=>Input::get('emobile'),
    'p_addrss'=>Input::get('epaddress'),
    'c_addrss'=>Input::get('ecaddress'),
    'quals'=>Input::get('quali'),
    'pdfname'=>$pdfname,
    'empId'=>Input::get('employeeId'),
    ];
return PDF::loadView('employee/generatepdf',$data)
        ->save(public_path().'/pdfs/'.$pdfname.'.pdf');

进入pdf模板页面。但是无法获取数组值。

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<img align="center" src="{{public_path()}}/assets/img/logo.png">
<table align="center" style="width:100%;margin-top:25px;">
<tr>
    <td style="width:50%">Registration ID</td>
    <td style="width:50%">:{{$data['empId']}}</td>
</tr>
<tr>
    <td style="width:50%">Name</td>
    <td style="width:50%">:{{$data['fname']}} {{$data['lname']}}</td>
</tr>
</table>
</body>
</html>

也没有将css规则带入pdf文件。

我如何解决这个问题......?

由于

3 个答案:

答案 0 :(得分:1)

您可以通过以下方式检查数组是否包含数据:

    $data =[
    'fname'=>Input::get('efname'),
    'lname'=>Input::get('elname'),
    'dob'=>Input::get('edob'),
    'reg_date'=>date('Y-m-d'),
    'email'=>Input::get('eemailaddrs'),
    'gender'=>Input::get('gender'),
    'mobile'=>Input::get('emobile'),
    'p_addrss'=>Input::get('epaddress'),
    'c_addrss'=>Input::get('ecaddress'),
    'quals'=>Input::get('quali'),
    'pdfname'=>$pdfname,
    'empId'=>Input::get('employeeId'),
    ];
  dd($data);
 return PDF::loadView('employee/generatepdf',$data)->save(public_path().'/pdfs/'.$pdfname.'.pdf');

试试吧,你会发现你的数组是否包含数据

答案 1 :(得分:0)

试试这样, 使用数组作为视图的第二个参数。

Map<String, String> mappings = new HashMap<>();
mappings.put("foo", "http://foo");
mappings.put("foo2", "http://foo");
mappings.put("bar", "http://bar");

context = new SimpleNamespaceContext(mappings);

context.getNamespaceURI("foo");    // "http://foo"
context.getPrefix("http://foo");   // "foo" or "foo2"
context.getPrefixes("http://foo"); // ["foo", "foo2"]

答案 2 :(得分:0)

您需要使用$data函数传递compact()变量

return PDF::loadView('employee/generatepdf',compact('data'))
    ->save(public_path().'/pdfs/'.$pdfname.'.pdf');