Intereting Posts
Прикрепление NetBeans к XDebug на XAMPP Webservice не удается Постоянный memcached в PHP – серверный пул растет до curr_connections 10 API-интерфейс PayPal REST, возвращающий 500-серверную ошибку для маркера кредитной карты используя mysql regex_replace с регулярным выражением Разрешения Unix, чтение и выполнение (контекст PHP) как получить индекс родительского массива из многомерного массива в php Форма отправляется в DIV с помощью jQuery mysql_ устарел Существуют ли какие-либо проекты для PHP, похожие на ActiveMerchant для Ruby? Zinnia (распознавание рукописного ввода) и интеграция PHP Вопросы каждый хороший PHP-разработчик должен иметь возможность ответить Вызов статического метода из имени строки в PHP Дружественные URL-адреса – переписывание мод и переадресация php Динамическое изменение фона div CSS с использованием JS в петле foreach blade Почему бы просто не использовать ajax для Page Requests для загрузки содержимого страницы?

twig template engine, используя статическую функцию или переменную

Есть ли способ вызвать статическую функцию или использовать старую переменную в веточке?

У меня есть класс статических вспомогательных функций и вы хотите использовать один или два в шаблоне.

Пару пути я закончил это делать.

Сначала это функция, которая может вызвать статическую функцию.

$twig = new Twig_Environment($loader); $twig->addFunction('staticCall', new Twig_Function_Function('staticCall')); function staticCall($class, $function, $args = array()) { if (class_exists($class) && method_exists($class, $function)) return call_user_func_array(array($class, $function), $args); return null; } 

Затем можно использовать как,

 {{ staticCall('myClass', 'mymethod', [optional params]) }} 

Другой – использовать магический метод.

Добавить класс в контекст render $

 $data['TwigRef'] = new TheClass(); class TheClass { public function __call($name, $arguments) { return call_user_func_array(array('TheClass', $name), $arguments); } ... } 

Затем можно использовать как,

 {{ TwigRef.myMethod(optional params) }} 

Вероятно, лучше добавить дополнительные проверки, чтобы вызывались только разрешенные функции.

Вы можете динамически добавлять функции в свои шаблоны ветви, зарегистрировав их. Либо они уже вызываются, либо вы используете свою статическую функцию по имени:

 $twig = new Twig_Environment($loader); $twig->addFunction('functionName', new Twig_Function_Function('someFunction')); 

См. Раздел « Функции » в «Расширение веточки» .