2013-04-14 12 views
9

Mam klasy zawierającej stałe opcje w postaci tablicy:dostęp statyczna zmienna w symfony 2.2 gałązka

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

Jak mogę uzyskać dostęp do $ UNVERSITY_STANDING lub $ Gender w symfony 2.2 gałązki?

Odpowiedz

2

moje rozwiązanie dla problemu, jak to jest, aby stworzyć statyczny element w TwigExtention:

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

Utwórz Funktion w EXTENTION:

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

i nazywają to w gałązce:

{{"something"|getStatic}} 

Pozdrowienia

10

just call constant function

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

Dziękuję za odpowiedź. W każdym razie użyłem sugerowanego sposobu dostępu do zmiennych stałych. Jednak nadal nie działa w celu uzyskania dostępu do zmiennych statycznych. – Floricel

6

można utworzyć niestandardową funkcję Gałązka, jak poniżej:

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

następnie dodać go do Gałązka

$twig->addFunction($staticFunc); 

Teraz można wywołać tę funkcję z widoku

{{ static('YourNameSpace\\ClassName', 'VARIABLE_NAME') }} 
Powiązane problemy