В ходе тестирования мне не удалось добавить глобальные переменные в TwigView Slim v4. Раньше вы могли сделать это так:
$twigView->getEnvironment()->addGlobal('flash', $container->get('flash'));
$twigView->getEnvironment()->addGlobal('session', $_SESSION);
Но теперь возникает исключение: невозможно добавить глобальную 'flash', поскольку среда выполнения или расширения уже инициализированы.
Я взглянул на класс Environment Twig и нашел этот бит проверки:
/**
* Registers a Global.
*
* New globals can be added before compiling or rendering a template;
* but after, you can only update existing globals.
*
* @param string $name The global name
* @param mixed $value The global value
*/
public function addGlobal($name, $value)
{
if ($this->extensionSet->isInitialized() && !array_key_exists($name, $this->getGlobals())) {
throw new \LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name));
}
if (null !== $this->resolvedGlobals) {
$this->resolvedGlobals[$name] = $value;
} else {
$this->globals[$name] = $value;
}
}
Может кто-нибудь объяснить мне, почему мы, кажется, выкидываем исключение, если глобальное НЕ СУЩЕСТВУЕТ, вместо этогоесли оно существует? Мне кажется, это логическая ошибка, но, возможно, я ее неправильно понимаю.
Заранее спасибо.