dompdf:templates& $ _SESSION变量

时间:2011-10-27 17:59:04

标签: templates session dompdf

我想知道这个设置是否有效。我必须通过一个表单(duh ......)从一堆变量中推出一批PDF来推送到$ _SESSION。我们的想法是将模板文件传递给dompdf引擎,并将模板从$ _SESSION填充到PDF。在我看来,当$ template被加载时,应该这样做,是吗?

这是基本代码:

<?php
function renderToPDF($theTemplate = "template.php") // this is just to show the value
{
  require_once("dompdf/dompdf_config.inc.php");

  $content = file_get_contents($theTemplate); 

  if ($content !== false)
  {
    $dompdf = new DOMPDF();
    $dompdf->load_html($content);
    $dompdf->render();
    $dompdf->stream("kapow_ItWorks.pdf");
  }
}
?>

这是template.php文件(基本上......你不想要所有16页......)

<html>
<meta>
<head>
  <link href="thisPage.css" type="text/css" rel="stylesheet">
</head>
  <body>
    <h1><?php echo $_SESSION['someTitle'] ?></h1>
    <h2>wouldn't it be nice, <?php echo $_SESSION['someName'] ?></h2>
  </body>
</html>

所以我的想法是template.php会将变量从$_SESSION数组中拉出来而不需要任何干预,如下所示:

BIG TITLE

不是很好吗,HandsomeLulu?

我想问题的核心是:加载PHP文件时是否会对$_SESSION变量进行评估,但是没有呈现?

WR!

2 个答案:

答案 0 :(得分:2)

file_get_contents不评估PHP文件,只是获取其内容(文件在硬盘中)。

要执行您想要的操作,您需要使用输出bufferinginclude

ob_start(); // Start Output beffering
include $theTemplate; // include the file and evaluate it : all the code outside of <?php ?> is like doing an `echo`
$content = ob_get_clean(); // retrieve what was outputted and close the OB

答案 1 :(得分:1)

由于某种原因,调用函数ALSO的页面上的代码被转储到文件中。这是放在标题之前。我现在明白了为什么:我不是引用外部页面,我是导入和外部页面。不知道为什么没有点击。

反正。一旦我摆脱了页面的额外东西,它工作得很好。回想起来,dompdf需要说明的是,任何类型的HTML(echo,print和&amp; c。)都不能在调用该函数的页面上。至少在我所掌握的知识水平上似乎需要它。

对于那些和我一样陷入“除了答案之外的所有事情”的错误的人来说,这是完成这项工作的基本代码:

buildPDF.php:

<?php
session_start();
$_SESSION['someTitle'] = "BIG FAT TITLE";
$_SESSION['someName'] = "HandomeLu";

$theTemplate = 'template.php';

function renderToPDF($templateFile)
{
  require_once("_dox/dompdf/dompdf_config.inc.php");
  ob_start();
  include $templateFile;
  $contents = ob_get_clean(); 

  if ($contents !== false)
  {
    $dompdf = new DOMPDF();
    $dompdf->load_html($contents);
    $dompdf->render();
    $dompdf->stream("kapow_ItWorks.pdf");
 }
}

renderToPDF($theTemplate);
?>

这是template.php:

    <!DOCTYPE HTML>
    <html>
    <meta>
    <head>
      <meta charset="utf-8">
      <link href="thisPage.css" type="text/css" rel="stylesheet">
    </head>
    <body>
      <h1><?php echo $_SESSION['someTitle'] ?></h1>
      <p>wouldn't it be nice, <?php echo $_SESSION['someName'] ?></p>
    </body>
   </html>

还要注意外部CSS文件读入就好了。所以你仍然可以保持结构和风格分开。另外,$ _SESSION变量可以在任何地方设置,显然,我只是将它们设置在这里以便于测试。

希望这对那些开始使用这个GREAT课程的人有用。如果你想要起床并开始运行PDF文件,这会踢得太厉害了,它应该有一个触发器并抓住它。 :)

感谢所有评论的人。你让我在我需要的地方。 :)

这个网站ROCKS。

WR!