在symfony 2.2 twig中访问静态变量

Flo*_*cel 9 static twig symfony-2.2

我有一个包含数组形式的常量选项的类:

namespace MyNameSpace;

class OptionConstants
{
  /**
   * Gender options
   */
   public static $GENDER = array(
    'Male',
    'Female'
   );

  /**
   * University year levels
   */
   public static $UNVERSITY_STANDING = array(
    '--None--',
    'First Year',
    'Second Year',
    'Third Year',
    'Fourth Year',
    'Graduate Student',
    'Graduated',
    'Other'
   );
}
Run Code Online (Sandbox Code Playgroud)

如何在symfony 2.2 twig中访问$ UNVERSITY_STANDING或$ GENDER?

Mar*_*nte 12

只是调用常量函数

{{ constant('Namespace\\Classname::CONSTANT_NAME') }}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢您的回答.无论如何,我已经使用你建议的方式来访问常量变量.但是,它仍然不能用于访问静态变量. (9认同)

小智 8

您可以创建自定义Twig函数,如下所示:

$staticFunc = new \Twig_SimpleFunction('static', function ($class, $property) {
        if (property_exists($class, $property)) {
            return $class::$$property;
        }
        return null;
    });
Run Code Online (Sandbox Code Playgroud)

然后将其添加到Twig中

$twig->addFunction($staticFunc);
Run Code Online (Sandbox Code Playgroud)

现在您可以从视图中调用此函数

{{ static('YourNameSpace\\ClassName', 'VARIABLE_NAME') }}
Run Code Online (Sandbox Code Playgroud)


Mic*_*Mic 3

我对此类问题的解决方案是在 TwigExtention 中创建一个静态成员:

class TwigExtension extends \Twig_Extension
{
    private static $myStatic = 1;
    ...
Run Code Online (Sandbox Code Playgroud)

在扩展中创建一个函数:

public function getStatic($something)
{
    self::$myStatic += 1;
    return self::$myStatic;
}
Run Code Online (Sandbox Code Playgroud)

并在树枝中调用它:

{{"something"|getStatic}}
Run Code Online (Sandbox Code Playgroud)

问候