Вопрос

Я пытаюсь работать с Fatfree Framework и пытаюсь использовать шаблонный двигатель. Я отображаю шаблон со следующим кодом -

echo Template::serve('template.php');

Проблема, с которой я сталкиваюсь, заключается в том, что внутри файла Template.php теги F3 распознаются, но любой код PHP не работает. Например, если у меня есть следующий код в файле Template.php -

<?php
if (F3::get('var') == 'var1') {
   ?>
   <span>var1 is present</span>
   <?php
} else {
   ?>
   <span>var1 not present</span>
   <?php
}
?>

Здесь оба var1 is present а также var1 not present печатается независимо от значения Var. Кроме того, PHP для петли не работает - поэтому в основном весь код PHP не работает.

Однако, если я использовал <F3:check> Чтобы написать приведенный выше код PHP, тогда все работает нормально. Не можем ли мы использовать код PHP в шаблонах. Если это так, это серьезное ограничение.

Это было полезно?

Решение

Я нашел ответ, хотя мне это не очень нравится.

Есть две разные функции, F3::render() а также Template::serve()

С F3::render() Вы можете оценить выражения PHP и использовать F3::get() Чтобы получить переменные. Согласно веб -сайту: "The only issue with embedding PHP code in your templates is the conscious effort needed to stick to MVC principles"

А Template::serve() только для шаблона. Это означает, что это просто для обработки языка шаблона.

Так что в основном, да, это отстой и не имеет смысла, вы можете оценить код PHP в F3::render() и вы не можете использовать шаблонные переменные ({{@var}}) -Или вы можете использовать Template::serve() И вы ограничены только вызовом функций PHP, а не по -настоящему оцениваете код PHP.

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

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

Например, в phptal http://phptal.org/manual/en/split/tal-condition.html Вы можете сделать это так:

<div tal:condition="php: var == 'var1'">
....
</div>

Это незарегистрировано, но вы можете поместить код в {~ ~} в шаблоне, и он будет преобразован в <?php ?> Когда шаблон составлен (с использованием v3.6).

например {~ @color = 'red' ~} станет <?php $color = 'red' ?>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top