У меня был собственный класс Template, который делал что-то вроде этого:
public function render(array $context)
{
// App & Twig
$app = App::getInstance();
$twig = $app->twig;
// Figure out which textdomain should be used
$prevTextDomain = textdomain(null);
textdomain($twig->getRenderTextDomain());
// Added helper variables, like isAdmin, isApi, isFront, am(assetmanager).
$context = array_merge($context, $twig->getRenderAttributes());
// Render
$data = parent::render($context);
// Set back to previous text domain
if (isset($prevTextDomain))
{
textdomain($prevTextDomain);
}
return $data;
}
Но теперь это устарело, но я не видел никакого нового способа сделать это? Должно быть, почему они просто осуждают вещи, не давая нового способа достичь того же самого? Итак, как это сделать без base_template_class
?
Я видел некоторые разговоры о том, что перехваты doEnterNode / doLeaveNode - это новый рекомендуемый способ. Но что я понимаю, я, вероятно, мог бы реализовать эту логику textdomain там, но как получить пользовательские переменные в контекст?
Также звучит doEnterNode / doLeaveNode, добавляя больше накладных расходов, чем просто перезапись рендера.
Итаквопрос в том, как этого добиться без base_template_class
?