如何将多行变量传递到树枝模板

时间:2018-07-10 13:02:13

标签: php templates twig

我想问一下如何将多行(带有换行符的字符串)变量传递到树枝模板中。

我用循环填充字符串变量,我需要用行尾填充。

foreach($rows as $row)
{
    $popissouboru = $row['jmeno_souboru'];
    $smernice.= $popissouboru.PHP_EOL;
}

然后我将此变量传递给twigtemplate(HTML),其中受影响的行看起来像这样

<p class="w3-text-black">{{ smernice }}</p>

但是最终输出会忽略行尾,并且所有内容都在一行中...

是否知道如何通过换行符/结束符?

谢谢

Jan

2 个答案:

答案 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);