Доступ к статической переменной в 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') }}