【问题标题】:phalconphp custom functions in volt doesn't workvolt中的phalconphp自定义函数不起作用
【发布时间】:2014-08-10 09:41:22
【问题描述】:

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

我的代码是:

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

【问题讨论】:

  • 尝试使用return $lang->translate($arg); 而不是echo
  • 这不是问题,因为在$arg中是一个字符串形式的变量。

标签: php phalcon volt


【解决方案1】:

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

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多