无法使用dompdf

时间:2016-10-20 18:09:24

标签: php html if-statement syntax dompdf

这是我的代码:

<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/config.php";
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();

$stmt = $pdo->prepare('SELECT name FROM my_table');
$stmt->execute();

$results = $stmt->fetchAll();
foreach( $results as $row ) {
$dompdf = new DOMPDF();

$html = "

".if(!empty($row['name']))  {
echo "My name is".$row['name']."";
}."

";

$dompdf->load_html($html);
}
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream();
?>

我总是得到:

  

解析错误:语法错误,意外&#39;如果&#39; (T_IF)in   第17行的/var/www/user_name/html/create_pdf.php

$html = "<p>Hello, it's me!</p>";这样的简单HTML代码可以使用。

此类$html = "My name is ".$row['name']."!";之类的PHP代码也可以使用。

只是if语句似乎不起作用。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

$html = "text... " . (!empty($row['...'])) ? $row['...'] : " " . " more text...";

删除if并创建&#39; inline&#39;或者如上所述的三元表达。

如果除非使用简写表达式(即:三元),否则无法连接语句

在您的情况下,这应该有效:

$html = " " . (!empty($row['name'])) ? "Your name is " . $row['name'] : "" . " ";

对于更长时间的连接,您可以执行此操作(和可读性):

$html = "";
$html .= (expression) ? True : False;
$html .= "";

要连接,我们在PHP中使用.=

我建议在PHP中使用print_f()方法来处理长HTML,例如。

print_f("your name is %s", (!empty($row['name'])) ? $row['name'] : 'Default');

答案 1 :(得分:0)

你不能在中间连接if的字符串(因为if语句不会返回任何内容)。

您可以使用三元运算符来解决此问题:

$html = "
    ".(!empty($row['name']) ? "My name is".$row['name'] : '')."
";

如果你有很长的if-else语句,你应该关闭字符串并在里面连接它:

$html = "";
$html .= "Some string\n";
if (....) {
    $html .= "Something new\n";
} elseif (...) {
    $html .= "more...\n";
} else {
    $html .= "...\n";
}
$html .= "Some text\";