Как передать многострочную переменную в шаблон веточки

Я хотел бы спросить, как передать многострочную (строку с переносом строки) переменную в шаблон веточки.

Я заполняю строковую переменную циклом, мне это нужно с концами строк.

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

Затем я передаю эту переменную в twigtemplate (HTML), где затронутая строка выглядит так

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

Но окончательный вывод игнорирует концы строк, и все находится в одной строке ...

Есть идеи, как пропустить разрывы / концы строк?

Спасибо

Янв

Вам нужно реальное визуальное представление в браузере или только в исходном коде?

DarkBee 10.07.2018 15:05

Мне нужно визуальное отображение в браузере ... Кстати, я уже нашел способ - я создаю строку с тегами html ---> $ smernice. = '<p>'. $ Popissouboru. '</p>'; и в шаблоне я использовал это {{smernice | raw}}

Jan Alexa 10.07.2018 15:09

Хорошо, не забывайте, что вы всегда можете использовать фильтр nl2br для преобразования новой строки в разрывы

DarkBee 10.07.2018 15:11

да, это тоже нормально, я попробую

Jan Alexa 10.07.2018 15:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
1 214
2

Ответы 2

Я просто наткнулся на это, когда искал решение той же проблемы. Я добавляю это как примечание для себя и для будущих читателей:

Если актуальная проблема заключается в том, чтобы получить разрывы строк в HTML, просто используйте nl2br

{{ content | nl2br }}

или просто сгенерируйте рассматриваемый контент с помощью тегов <br> или <p> в первую очередь, как намекает OP.

Если вы просто хотите удалить символы новой строки, используйте replace:

{{ content | replace({"\n":""}) }}

Если ваш контент также включает в себя окончания строк Windows, используйте:

{{ content|replace({"\n":'', "\r":''}) }}

или просто используйте фильтр отделка, который внутренне использует функцию обрезки PHP, которая удаляет все виды пробелов в начале и в конце строки:

{{ content |trim }}

Вы также можете сгенерировать цикл for-each внутри своего шаблона веточки. Если вам нужны разрывы строк, вы можете создать таблицу без границ и для каждого значения цикла использовать одну строку таблицы. Однако это может выходить за рамки вашей цели. Я все равно попробую. Может, поможет:

{% 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);

Другие вопросы по теме