我想问一下如何将多行(带有换行符的字符串)变量传递到树枝模板中。
我用循环填充字符串变量,我需要用行尾填充。
foreach($rows as $row)
{
$popissouboru = $row['jmeno_souboru'];
$smernice.= $popissouboru.PHP_EOL;
}
然后我将此变量传递给twigtemplate(HTML),其中受影响的行看起来像这样
<p class="w3-text-black">{{ smernice }}</p>
但是最终输出会忽略行尾,并且所有内容都在一行中...
是否知道如何通过换行符/结束符?
谢谢
Jan
答案 0 :(得分:0)
当我寻找同样问题的解决方案时,我偶然发现了这一点。我将此作为自己和将来读者的注释:
如果实际问题是使用HTML换行,请简单使用nl2br
{{ content | nl2br }}
或仅在OP中提示首先生成带有<br>
或<p>
标签的相关内容。
如果您只想删除换行符,请使用replace
:
{{ content | replace({"\n":""}) }}
如果您的内容还包括Windows行结尾,请使用:
{{ content|replace({"\n":'', "\r":''}) }}
或仅使用trim过滤器,该过滤器内部使用PHP修剪函数,该函数将从字符串的开头和结尾去除所有空白:
{{ content |trim }}
答案 1 :(得分:0)
您也可以在树枝模板内部生成for-each-loop。 如果要换行,则可以创建一个无边界的表,并且对于每个循环值,请使用一个表行。但是,这可能超出了您的目的。无论如何我都会尝试。也许有帮助:
{% for user in users %}
<table border="0">
<tr>
<td>{{ user.user_id }}</td>
</tr>
<tr>
<td>{{ user.user_name }}</td>
</tr>
<tr>
<td>{{ user.user_type }}</td>
</tr>
</table>
{% endfor %}
<?php
require_once 'vendor/autoload.php'; // automatically load pathes
require_once "utils/Database.class.php"; // include database configuration
// init twig
$loader = new Twig_Loader_Filesystem('template/'); // determines template path
//creates twig object and instances
$twig = new Twig_Environment($loader, array(
"debug" => "true",
));
$twig->addExtension(new Twig_Extension_Debug());
include "utils/injector.php"; //sql injection
/* ------- */
DatabaseLink::getInstance()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// fetch data from database
$stmt = DatabaseLink::getInstance()->query("SELECT * FROM user");
$userData = $stmt->fetchAll();
//template values
$templateName = "listUsers.twig";
$data = array(
"users" => $userData
);
//display
echo $twig->render($templateName, $data);