3

有谁知道如何使用 F3::set 在模型/视图中分配然后使用闭包?或者为以下场景提供解决方案?

我正在使用版本 1.4.4

这是我正在尝试做的事情:

//In Model - Loaded from controller w/ F3::call
F3::set('getPrice', function($tax, $profile){
//return price
});

//In View - Inside an F3:repeat of @products
{@getPrice(@product.tax, @product.profile)}

但是似乎不支持闭包......如果我使用 require/include 加载模型,定义函数 w/o F3::set,并在视图中启用用户定义的函数,我可以让它工作。但我希望保持使用 F3::call/F3::set 提供的分离水平。

谢谢!

4

2 回答 2

1

好的,所以 1.4.4 版不支持这个,但 2.0 版支持。感谢 2.0 的重大更新!这是匿名函数支持:

控制器-

F3::set('func',
    function($a,$b) {
        return $a.', '.$b;
    }
);

模板-

{{@func('hello','world')}}

这是对象支持:

$foo=new stdClass;
$foo->phrase='99 bottles of beer';
F3::set('myvar',$foo);

{{@myvar->phrase}}

http://fatfree.sourceforge.net/page/views-templates

于 2011-06-30T03:57:09.410 回答
1

也许不是您想听到的答案,但是:F3 的模板引擎非常严格,所以我建议您根本不要使用它。F3 本身适用于简单的项目,幸运的是您可以选择要使用的组件。简单的 PHP 模板仍然胜过任何模板引擎,并且通过一个小包装器,您可以轻松地访问其中的 F3 变量。您的模板可能如下所示:

<?= $this->getPrice($this->product->tax, $this->product->profile) ?>

包装器只需要包含模板并适当地实现 __get 和 __call。

于 2011-04-04T07:47:54.567 回答