0

我有这段代码在变量中写入$products一串产品名称:

$products = '';
foreach($order->pad_products as $product) $products .= " $product->title";

当我在 HTML 电子邮件正文中打印$products并使用 PHP 发送电子邮件时,在这种情况下,我$msg会在一行中看到产品名称。

$msg = "
  <html>
    <head>
      <style type='text/css'></style>
    </head>
    <body>
      <h1>Sent!</h1>
      <p>$name thank you</p>
        $products
    </body>
  </html>";

我怎样才能列出这些产品?而且,我可以删除其中之一吗?

4

2 回答 2

2

要将它们显示为列表,您只需使用 HTML 创建一个列表:

<?php
echo "<ul>";
foreach($order->pad_products as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>

替代方案,适用于您当前的代码

<?php
$products = "";
foreach($order->pad_products as $product) {
    $products .= "<li>".$product->title."</li>";
}
$msg = "
<html>
<body>
  <h1>Sent!</h1>
    $products
</body>
</html>";
于 2018-09-05T08:38:31.250 回答
1

ProcessWire(您用它标记了它)允许您使用以下方法执行此操作pop()

<?php
echo "<ul>";
$products = $order->pad_products;
$products->pop(); 
foreach($products as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>

另一种选择是计算项目的数量并限制为少一个。你应该可以使用->count(),但我不知道 pad_products 是什么,所以如果这不起作用,你可以这样做count($order->pad_products)

<?php
echo "<ul>";
$limit = $order->pad_products->count() - 1;
foreach($order->pad_products("limit=$limit") as $product) {
    echo "<li>" . $product->title . "</li>";
}
echo "</ul>";
?>
于 2018-09-05T22:15:48.857 回答