PHP-код в шаблоне FatFree - PullRequest
       21

PHP-код в шаблоне FatFree

7 голосов
/ 16 февраля 2012

Я пытаюсь работать с 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 for не работают - поэтому практически весь код php не работает.

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

Ответы [ 3 ]

8 голосов
/ 21 февраля 2012

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

Есть две разные функции: 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.

0 голосов
/ 02 июля 2019

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

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

0 голосов
/ 02 сентября 2015

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

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

...