1

我在访问自定义函数中的变量时遇到问题。

我的代码是:

{{ 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”返回。我做错了什么?

4

1 回答 1

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.')';
});

干杯!

于 2014-08-14T23:26:31.347 回答