1

似乎 F3 框架不处理页面内的 php 函数调用?我有一个 php 导航栏,它在站点范围内是统一的。我在我的控制器类中调用我的布局页面:Template::serve('layout.php'). 在布局页面中,我包含导航栏:<F3:include href="navbar.php" />. 在 navbar(导航)文件中,我调用了一个实用函数 siteUrl,它获取资源的绝对 url,例如 css 或 .js 文件。这个函数在一个包含文件中定义,我包含如下:require_once "lib/globals.php. 在 navbar.php 中,我使用 siteUrl,例如:

<img id="logo" alt="logo" src="<?php echo siteUrl('small-logo.png') ?>" /> 

这似乎不起作用。当我查看页面的生成源时,img标签的src部分是一个空字符串:“”。但是,当我从其他未使用 F3 框架的页面(即未通过 F3::route 路由的页面。并非网站的所有页面都使用 F3 路由)调用导航栏时,它工作正常。

可能是什么问题呢?如何从使用 Template::serve 呈现的 php 页面中调用 php 函数?当 F3 提供页面时,标签之间的全部内容似乎<?php ?>没有被执行。没有显示回声语句。感谢您的回复。

4

3 回答 3

2

Template::serve()不允许 PHP。它是一个模板引擎。有些事情你可以做。您可以使用 定义一个函数F3::set('sum',function($a,$b){return 1+2;});,然后在模板中使用{{@sum(1,2)}}. 我会重新阅读 fatfree 网站上的模板文档:http: //bcosca.github.com/fatfree/#views-templates

同样,PHP 不工作的原因是因为您正在使用Template::serve()并且因此正在使用 Fatfree 的模板功能。如果你想使用 PHP,我相信你可以改用F3::render()它,它会渲染页面,允许 PHP,但是你会失去所有的模板功能。

于 2012-08-08T19:21:57.153 回答
1

您可以在由花括号包裹的模板标记中使用原始 php,如下所示:

<img id="logo" alt="logo" src="{{ siteUrl('small-logo.png') }}" />

它会自动回显。

但是使用 F3::set('image.smallLogo',siteUrl('small-logo.png')) 来定义图像路径并用简单的 {{@image.smallLogo}} 抓住它们感觉好多了。

于 2012-08-17T10:10:28.900 回答
0

页面移动: Fat-Free Framework 3 模板指令

于 2013-12-07T04:34:22.430 回答