F3 框架模板服务不调用 PHP 函数


F3 Framework Template serve not calling PHP functions

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

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

这似乎行不通。当我查看生成的页面源代码时,img 标签的 src 部分是一个空字符串:"。但是,当我从不使用 F3 框架的其他页面(即未由 F3::route 路由.pages调用导航栏时。并非网站的所有页面都使用 F3 路由),它工作正常。
可能是什么问题?如何从使用 Template::serve 呈现的 php 页面中调用 php 函数?当 F3 提供页面时,似乎没有执行 <?php ?> 标记之间的全部内容。不显示回显语句。感谢您的回复。

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

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

您可以在由卷曲的刹车包装的模板令牌中使用原始 php,如下所示:

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

会自动回显它。

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

页面移动:无脂框架 3 模板指令