Если я использую переменную ‘GET’ в макросе Twig, я получаю следующую ошибку:
Fatal error: Cannot re-assign auto-global variable _GET in /var/www/basedir/vendor/twig/twig/lib/Twig/Environment.php(331) : eval()'d code on line 21
Почесав голову, я обнаружил, что могу сменить имя с «GET» на «get», и ошибка исчезнет. Впрочем, нормально использовать переменную GET
в шаблоне, только не в макросе.
Я мог и буду менять имя. Мой вопрос: почему это происходит, и есть ли другие недопустимые имена переменных, о которых я должен знать?
<?php
require_once '../../../vendor/autoload.php';
Twig_Autoloader::register();
try {
$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader, array('debug' => true,));
$twig->addExtension(new Twig_Extension_Debug());
echo $twig->render('get.html', array('GET'=>$_GET));
} catch (Exception $e) {
die ('ERROR: ' . $e->getMessage());
}
?>
get.html
{% import "forms.html" as forms %}
{{ forms.someFunction(GET) }}
forms.html
{% macro someFunction(GET) %}
{{ dump(GET) }}
{% endmacro %}
Задача ещё не решена.
Других решений пока нет …