繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM