2013-04-14 16 views
9

ho una classe che contiene le opzioni costanti in forma di matrice:accesso variabile statica in symfony 2.2 ramoscello

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

Come posso accedere $ UNVERSITY_STANDING o $ GENERE in symfony 2.2 ramoscello?

risposta

2

mia soluzione per un problema come questo è quello di creare un membro statico nella TwigExtention:

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

Creare un Funktion nella Estensione:

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

e chiamare questo ramoscello:

{{"something"|getStatic}} 

Saluti

10

just call constant function

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

Grazie per la risposta. Ad ogni modo, ho usato il tuo modo suggerito per accedere a variabili costanti. Tuttavia, continua a non funzionare per accedere a variabili statiche. – Floricel

6

È possibile creare una funzione di Twig personalizzata come di seguito:

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

Quindi aggiungere in Ramoscello

$twig->addFunction($staticFunc); 

Ora è possibile chiamare questa funzione dalla tua vista

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