Twig, кажется, вставить \n
после содержания {% include %}
, Я могу воспроизвести проблему с помощью этого простого примера:
test.php:
<?php
require "vendor/autoload.php";
$loader = new Twig_Loader_Filesystem(__DIR__);
$twig = new Twig_Environment($loader, []);
echo $twig->render('test.twig', ['foo' => 'bar']);
test.twig:
{% include "include.twig" %}{{ foo }}
include.twig:
Foo:
Я ожидаю, что результат будет:
Foo:bar
но вместо этого это:
Foo:
bar
Есть ли способ, которым я могу предотвратить это? Управление пробелами Twig с помощью {%- ... -%}
не влияет на это.
ОБНОВИТЬ:
Как уже упоминалось в ответе Сягра, на самом деле 0x0a
символ в конце шаблона, который не отображается в VIM даже при :set binary
,
Знаю, я знаю, почему это происходит, но мне все еще нужно решение. Проверка всех шаблонов с помощью шестнадцатеричного редактора не является приемлемым вариантом.
Ваш текстовый редактор добавляет символ новой строки в конце вашего .twig
файлы.
Я могу воспроизвести вашу проблему, описанную в вопросе, когда я работаю с обычными текстовыми редакторами, или nano
, Шестнадцатеричная сумма include.twig
файл показывает новую строку:
$ xxd -p include.twig
466f6f3a0a
Чтобы доказать, что текстовые редакторы вставляют эти символы новой строки, я удалил include.twig
подать и сделал generate.php
файл:
file_put_contents('include.twig', 'Foo:');
Новая шестнадцатеричная сумма:
$ xxd -p include.twig
466f6f3a
И новый выход Twig:
Foo:bar
Попробуйте сами!
Интересно, что вы можете заставить Twig игнорировать завершающий символ новой строки при включении файлов шаблонов, добавив пустой комментарий в конец файла:
Foo:{# #}
Других решений пока нет …