Доступ к статической переменной в symfony 2.2 twig

У меня есть класс, содержащий постоянные параметры в виде массива:

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

Как я могу получить доступ к $UNVERSITY_STANDING или $GENDER в symfony 2.2 twig?

3 ответов


мое решение для такой проблемы-создать статический член в TwigExtention:

class TwigExtension extends \Twig_Extension
{
    private static $myStatic = 1;
    ...

создайте функцию в расширении:

public function getStatic($something)
{
    self::$myStatic += 1;
    return self::$myStatic;
}

и назовем это в веточке:

{{"something"|getStatic}}

поздравления


просто вызовите постоянную функцию

{{ constant('Namespace\Classname::CONSTANT_NAME') }}

вы можете создать пользовательскую функцию веточки, как показано ниже:

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

затем добавьте его в ветку

$twig->addFunction($staticFunc);

Теперь вы можете вызвать эту функцию из своего представления

{{ static('YourNameSpace\ClassName', 'VARIABLE_NAME') }}