我在自定义函数中访问变量时遇到问题。
我的代码是:
{{ myFunction(variableFromController) }}
和PHP:
$compiler->addFunction('myFunction',function($resolvedArgs,$exprArgs)use($di,$compiler){
$arg = $compiler->expression($exprArgs[0]['expr']); $lang = $di->get('lang');
echo $lang->translate($arg);
});
问题是编译器会将变量作为字符串“$ variableFromController”返回。我做错了什么?
答案 0 :(得分:2)
Volt(或其他引擎)只是PHP上的某种附加层,因此您添加到编译器的任何函数都更像是一个快捷方式。他们不是自己“做”某事。它们只是打印将在以后执行的部分代码。
换句话说,这很糟糕:
$compiler->addFunction('myFunction',function($resolvedArgs,$exprArgs)use($di,$compiler){
// do stuff with $value
return $someClass->someMethod($value);
});
这很好:
$compiler->addFunction('myFunction',function($resolvedArgs,$exprArgs)use($di,$compiler){
$arg = $compiler->expression($exprArgs[0]['expr']); $lang = $di->get('lang');
return '\\My\\Class::staticMethod('.$arg.', '.$lang.')';
});
干杯!