有没有人知道如何使用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加载模型,定义没有F3 :: set的函数,并在视图中启用用户定义的函数,我可以使它工作。但我希望通过使用F3 :: call / F3 :: set来保持分离水平。
谢谢!
答案 0 :(得分:1)
也许不是你想听到的答案但是:F3的模板引擎是非常严格的限制,因此我建议不要使用它。 F3本身对于简单的项目是可以的,幸运的是你可以选择你想要使用的组件。简单的PHP模板仍然可以击败任何模板引擎,只需一个小包装器就可以轻松访问其中的F3变量。您的模板可能看起来像这样:
<?= $this->getPrice($this->product->tax, $this->product->profile) ?>
包装器只需要包含模板并适当地实现__get和__call。
答案 1 :(得分: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}}