7

我正在尝试使用 FatFree 框架并尝试使用模板引擎。我使用以下代码渲染模板 -

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
}
?>

无论 var 的值如何,这里都会打印var1 is present和。var1 not present此外,php for 循环不起作用 - 所以基本上所有的 php 代码都不起作用。

但是,如果我<F3:check>以前编写上述 PHP 代码,那么一切正常。我们不能在模板中使用 PHP 代码吗?如果是这种情况,这是一个严重的限制。

4

3 回答 3

8

我找到了答案,虽然我不是很喜欢。

有两种不同的功能,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 代码。

于 2012-02-21T03:21:28.617 回答
0

也许尝试使用不同的模板引擎,这将使您更容易定义块变量依赖关系?

例如在 PHPTal http://phptal.org/manual/en/split/tal-condition.html你可以这样做:

<div tal:condition="php: var == 'var1'">
....
</div>
于 2015-09-02T12:17:57.733 回答
0

它没有记录,但您可以将代码放入{~ ~}模板中,并且将<?php ?>在模板编译时转换(使用 v3.6)。

例如{~ @color = 'red' ~}将成为<?php $color = 'red' ?>

于 2019-07-02T15:11:55.737 回答