[英]how pass multiline variable into twig template
我想问一下如何将multiline(带有换行符的字符串)变量传递到树枝模板中。
我用循环填充字符串变量,我需要用lineends。
foreach($rows as $row)
{
$popissouboru = $row['jmeno_souboru'];
$smernice.= $popissouboru.PHP_EOL;
}
然后,我将此变量传递给twigtemplate(HTML),其中受影响的行如下所示
<p class="w3-text-black">{{ smernice }}</p>
但是最终输出会忽略行尾,并且所有内容都在一行中...
知道如何通过换行符/结尾吗?
谢谢
一月
当我寻找同样问题的解决方案时,我偶然发现了这一点。 我将此作为自己和未来读者的注释:
如果实际问题是要在HTML中换行,请简单使用nl2br
{{ content | nl2br }}
或仅按照OP的提示,首先使用<br>
或<p>
-tags生成问题内容。
如果您只想删除换行符,请使用replace
:
{{ content | replace({"\n":""}) }}
如果您的内容还包括Windows行结尾,请使用:
{{ content|replace({"\n":'', "\r":''}) }}
或只使用内部使用PHP修剪函数的修剪过滤器,该函数将从字符串的开头和结尾去除所有空白:
{{ content |trim }}
您也可以在树枝模板内部生成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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.